#include<iostream>
using namespace std;
int arr[] = {5,4,9,3,7,1,8,0};
void merge(int l,int r)
{
int mid = (l + r) / 2;
mid++;
int ls = mid - l;
int rs = r - mid + 1;
int left[ls],right[rs];
for(int i = l;i < mid;i++)
left[i-l] = arr[i];
for(int i = mid;i <= r;i++)
right[i-mid] = arr[i];
int i = 0,j = 0,k = l;
while(i < ls && j < rs)
{
if(left[i] < right[j])
arr[k++] = left[i++];
else
arr[k++] = right[j++];
}
while(i < ls)
arr[k++] = left[i++];
while(j < rs)
arr[k++] = right[j++];
}
void mergesort(int l,int r)
{
if(l == r)
return;
int mid = (l + r) / 2;
mergesort(l,mid);
mergesort(mid+1,r);
merge(l,r);
}
int main()
{
mergesort(0,7);
for(int i = 0;i < 8;i++)
cout << arr[i] << " ";
return 0;
}
归并排序c++模板
最新推荐文章于 2024-05-15 01:12:59 发布