自写归并排序和调用系统排序方法,C++

#include<iostream>
#include<stdlib.h>
#include<malloc.h>
#include<algorithm>
#include<ctime>
#define length 10
using namespace std;
bool compare(int a, int b)
{
return a > b;
}
void mergeSorted(int *array, int start, int end);
int main()
{
srand(time(NULL));
int* array;
array = (int *)malloc(sizeof(int) * length);
for (int i = 0;i < length; i++)
{
array[i] = rand()%100;
cout<<array[i]<<" ";
}
cout<<endl;
//调用系统自带排序函数
sort(array, array+10, compare);
cout<<"result: "<<endl;
for (int i = 0;i < length; i++)
{
cout<<array[i]<<" ";
}
cout<<endl;
mergeSorted(array,0,length);

return 0;
}
void mergeSorted(int *array,int start, int end)
{
if (end - start <= 1)
{
return;
}
int mid = (end + start)/2;
mergeSorted(array,start, mid);
mergeSorted(array, mid, end);
//第一半的第一个开始,后面的只可能比j之前的大,不可能比j之前的小
int j = 0;
//从后一半的一个出发
for (int i = mid; i < end; i++)
{
for (;j < mid; j++)
{
if (array[i] < array[j])
{
//移位
int temp = array[i];
for (int i1 = i; i1 > j ;)
{
array[i1] = array[--i1];
}
array[j] = temp;
}
}
}
}

原文地址:https://www.cnblogs.com/adamhome/p/7583787.html