void merge(int array[], int left, int mid, int right, int temp[])
{
int i = left;
int j = mid + 1;
int k = 0;
while(i <= mid && j <= right)
{
if (array[i] <= array[j])
{
temp[k++] = array[i++];
}
else
{
temp[k++] = array[j++];
}
}
while(i <= mid)
{
temp[k++] = array[i++];
}
while(j <= right)
{
temp[k++] = array[j++];
}
k = 0;
while(left <= right)
{
array[left++] = array[k++];
}
}
void sort(int array[], int left, int right, int temp[])
{
if (left < right)
{
int mid = (left+right)/2;
sort(array, left, mid, temp);
sort(array, mid+1, right, temp);
merge(array, left, mid, right, temp);
}
}
void mergeSort(int array[], int len)
{
int* temp = new int[len];
sort(array, 0, len-1, temp);
delete []temp;
}
归并排序
最新推荐文章于 2024-08-12 19:32:44 发布