Sourav das

Posted on

# Merge sort

In `cpp`

``````#include <iostream>
using namespace std;
void ms(int *arr,int low,int mid,int high)
{
int b[low+high];
int i=low;
int j=mid+1;
int k=low;
while(i<=mid && j<=high)
{
if (arr[i]<arr[j])
{
b[k]=arr[i];
i++;
}
else
{
b[k]=arr[j];
j++;
}
k++;
}
while(i<=mid)
{
b[k]=arr[i];
i++;
k++;
}
while(j<=high)
{
b[k]=arr[j];
j++;
k++;
}
int p=low;
while(p<k)
{
arr[p]=b[p];
p++;
}
}
void divide(int *arr,int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
divide(arr,low,mid);
divide(arr,mid+1,high);
ms(arr,low,mid,high);
}
}
int main()
{
int arr[]={5,6,8,9,1};
divide(arr,0,5);
for (int i = 0; i < 5; ++i)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
``````

In `python`

``````def ms(n):
if len(n)>1:
mid=len(n)//2
lefthalf=n[:mid]
righthalf=n[mid:]
ms(lefthalf)
ms(righthalf)
i=j=k=0
while i<len(lefthalf) and j<len(righthalf):
if lefthalf[i]<righthalf[j]:
n[k]=lefthalf[i]
i+=1
k+=1
else:
n[k]=righthalf[j]
j+=1
k+=1
while i<len(lefthalf):
n[k]=lefthalf[i]
i+=1
k+=1
while j<len(righthalf):
n[k]=righthalf[j]
j+=1
k+=1
return n
a=[9,1,5,3,4,3]
print(ms(a))
``````

in `ruby`

``````def ms n
if n.size>1
mid=n.size/2
left=n.slice(0,mid)
right=n.slice(mid,100)
ms left
ms right
i=j=k=0
while i<left.size && j<right.size
if left[i]<right[j]
n[k]=left[i]
i+=1
k+=1
else
n[k]=right[j]
j+=1
k+=1
end
end
while i<left.size
n[k]=left[i]
i+=1
k+=1
end
while j<right.size
n[k]=right[j]
j+=1
k+=1
end
end
return n
end

n=[9,6,4,1,2]
print ms n
puts
``````

DEV Community

## An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.