写一下c++归并排序排序代码
时间: 2023-03-10 17:43:59 浏览: 139
归并排序的c++代码
5星 · 资源好评率100%
归并排序的基本思想是:把待排序的序列分解成若干个子序列,先对子序列进行排序,然后再对子序列段间进行合并,最终得到一个有序序列。代码如下:// 归并排序
void merge_sort(int array[], int left, int right) {
if (left < right) {
int mid = (left + right) / 2; // 计算中间位置
merge_sort(array, left, mid); // 递归排序左边
merge_sort(array, mid + 1, right); // 递归排序右边
merge(array, left, mid, right); // 合并两个有序子数组
}
}// 合并两个有序子数组
void merge(int array[], int left, int mid, int right) {
int i = left , j = mid + 1, k = 0;
int temp[right - left + 1]; // 临时数组 // 将两个有序子数组中的元素按大小顺序合并到临时数组
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++];
} // 将临时数组中的元素复制到原数组
for (i = 0; i < k; i++) {
array[left + i] = temp[i];
}
}
阅读全文