void Merge(int array[], int start, int mid, int end)//归并排序的合并算法
{
int temp1[10], temp2[10];
int n1, n2;
n1 = mid - start + 1;
n2 = end - mid;
for (int i = 0; i < n2; i++){
temp2[i] = array[mid + i + 1];//拷贝后半部分数组
}
temp1[n1] = temp2[n2] = 1000;//后面的元素设置很大
for (int k = start, i = 0, j = 0; k <= end; k++){
if (temp1[i] <= temp2[j])
{
array[k] = temp1[i];
i++;
}
else
{
array[k] = temp2[j];
j++;
}
}
}
void MergeSort(int array[], int start, int end)
{
if (start < end)
{
int i;
i = (start + end) / 2;
MergeSort(array, start, i);//前半部分排序
MergeSort(array, end, i);//后半部分排序
Merge(array, start, i, end);
}
}
归并排序
最新推荐文章于 2024-04-28 12:18:26 发布