#include<iostream>
using namespace std;
void merge(int arr[], int low, int mid, int high) {
int i, j, k;
int n = mid - low + 1;
int m = high - mid;
int* L = new int[n];
int* R = new int[m];
for ( i = 0, k = low; i < n; i++, k++) {
L[i] = arr[k];
}
for ( i = 0, k = mid+1; i < m; i++, k++) {
R[i] = arr[k];
}
for ( i = 0, j = 0, k = low; i < n&&j < m; k++) {
if (L[i] < R[j]) {
arr[k] = L[i];
i++;
}
else {
arr[k] = R[j];
j++;
}
}
while( i < n) {
arr[k++] = L[i++];
}
while ( j < m) {
arr[k++] = R[j++];
}
}
void mergesort(int arr[], int low, int high) {
if (low < high) {
int mid = (low + high) / 2;
mergesort(arr, low, mid);
mergesort(arr, mid + 1, high);
merge(arr, low, mid, high);
}
}
int main() {
int arr[] = { 5,4,9,8,7,6,0,1,3,2 };
int len = sizeof(arr) / sizeof(arr[0]);
mergesort(arr, 0, len - 1);
for (int i = 0; i < len; i++) {
cout << arr[i] << ' ';
}
cout << endl;
system("pause");
return 0;
}
归并排序
最新推荐文章于 2021-09-18 20:56:40 发布