#include <iostream>
using namespace std;
void merge(int a[], int temp[], int left, int mid, int right) {
int m = right - left + 1;
int i = left;
int j = mid + 1;
int k = 0;
while (i <= mid && j <= right) {
if (a[i] < a[j]) {
temp[k++] = a[i++];
}
else {
temp[k++] = a[j++];
}
}
while (i <= mid) {
temp[k++] = a[i++];
}
while (j <= right) {
temp[k++] = a[j++];
}
for (int p = left,q=0; p <= right&&q<=k; ++p,++q) {
a[p] = temp[q];
}
}
void mergeSort(int a[],int temp[], int left, int right) {
if (left >= right) {
return;
}
else {
int mid = left + ((right - left)>>1);
mergeSort(a, temp,left,mid);
mergeSort(a, temp,mid+1, right);
merge(a, temp,left, mid, right);
return;
}
}
int main()
{
int a[6] = { 52, 36, 42, 15, 23, 62 };
int temp[6] = { 0,0,0,0,0,0 };
mergeSort(a,temp, 0, 5);
for (int n = 0; n < 6; ++n) {
cout << a[n]<<" ";
}
}
归并排序c++
最新推荐文章于 2024-06-01 20:09:00 发布