归并排序
#include<iostream>
using namespace std;
class mergesort {
public:
int process(int* arry, int l, int r) {
if (l = r)return;
int mid = l + (r - l) >> 1;
process(arry, l, mid);
process(arry, mid + 1, r);
merge( arry, l, mid, r);
}
int merge(int* arry, int l, int mid, int r) {
int* help = new int[r - l + 1];
int index = 0;
int p1 = l, p2 = mid + 1;
while (p1<=mid && p2<=r)
{
help[index++] = arry[p1] < arry[p2] ? arry[p1++] : arry[p2++];
}
while (p1<=mid)
{
help[index++] = arry[p1++];
}
while (p2<=r)
{
help[index++] = arry[p2++];
}
for (int i = 0; i < index; i++)
{
arry[l + i] = help[i];
}
delete help;
}
public:
int arry[100];
};