#include<iostream>
#include<cstring>
using namespace std;
void merge_sort(int* init_array,int* tem, int left, int right)
{
if(left >= right)
return ;
else
{
int start = left;
int mid = (left + right) / 2;
merge_sort(init_array, tem, left, mid);
merge_sort(init_array, tem,mid + 1 , right);
int init_a = left, init_b = mid + 1;
while(init_a != mid + 1 && init_b != right + 1)
{
while(init_array[init_a] <= init_array[init_b] && init_a <= mid)
{
tem[left++] = init_array[init_a];
init_a++;
}
if(init_a >mid)
break;
while(init_array[init_b] < init_array[init_a] && init_b <= right)
{
tem[left++] = init_array[init_b];
init_b++;
}
if(init_b >right)
break;
}
while(init_a <= mid)
{
tem[left++] = init_array[init_a];
init_a++;
}
while(init_b <= right)
{
tem[left++] = init_array[init_b];
init_b++;
}
for(int x = start; x <= right; x++)
init_array[x] = tem[x];
}
}
int main()
{
int a[7] = {5, 10, 4, 3, 6, 7, 0};
int* tem = new int [7];
memset(tem, 0, sizeof(tem));
merge_sort(a, tem, 0, 6);
for(int x = 0; x < 7; x++)
cout<<a[x]<<" ";
cout<<endl;
return 0;
}
归并排序算法
最新推荐文章于 2025-08-12 16:59:02 发布