归并排序

来源:互联网 发布:python算法教程 pdf 编辑:程序博客网 时间:2024/06/06 06:50

归并排序分两步:

1、分:二分法,让每个组元素都有序,只有每个组只有一个元素时才一定有序。

2、合:按照二分法分出的小组组合。


void Merge(int arr[], int tmp[], int startIndex, int midIndex, int endIndex){int i = startIndex;int j = midIndex + 1;int k = startIndex;while (i != midIndex + 1 && j != endIndex + 1){if (arr[i] > arr[j]){tmp[k++] = arr[j++];}else{tmp[k++] = arr[i++];}}while (i != midIndex + 1){tmp[k++] = arr[i++];}while (j != endIndex + 1){tmp[k++] = arr[j++];}for (int i = startIndex; i <= endIndex; ++i){arr[i] = tmp[i];}}void MergeSort(int arr[], int tmp[], int startIndex, int endIndex){if (startIndex < endIndex){int midIndex = (startIndex + endIndex) / 2;MergeSort(arr, tmp, startIndex, midIndex);MergeSort(arr, tmp, midIndex + 1, endIndex);Merge(arr, tmp, startIndex, midIndex, endIndex);}}


原创粉丝点击