代码
#include <iostream>
using namespace std;
void Ms(double A[], int left, int right) {
if (right > left) {
Ms(A, left, (left + right) / 2);
Ms(A, (left + right) / 2 + 1, right);
}
int n1 = (right - left + 1) / 2 + 1;
int n2 = (right - left + 1) / 2;
double L[n1];
double R[n2];
for (int i = 0; i < n1; i++) L[i] = A[left + i];
for (int i = 0; i < n2; i++) R[i] = A[(left + right) / 2 + 1 + i];
int il = 0;
int ir = 0;
int k = left;
while (il < n1 && ir < n2) {
if (L[il] < R[ir]) {
A[k++] = L[il++];
} else {
A[k++] = R[ir++];
}
for(int i=0;i<10;i++)cout << A[i] << " ";
cout<<""<<endl;
}
while (il < n1) {
A[k++] = L[il++];
for(int i=0;i<10;i++)cout << A[i] << " ";cout<<""<<endl;}
while (ir < n2) {
A[k++] = R[ir++];
for(int i=0;i<10;i++)cout << A[i] << " ";cout<<""<<endl;}
}
int main()
{
double a[10]={52,62,4,5,5,31,7,36,81,3};
Ms(a,0,9);
for(int i=0;i<10;i++)cout << a[i] << " ";
return 0;
}
输出
52 62 4 5 5 31 7 36 81 3
52 62 4 5 5 31 7 36 81 3
52 62 4 5 5 31 7 36 81 3
52 62 4 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 31 7 36 81 3
52 62 62 5 5 5 7 36 81 3
5 62 62 5 5 5 7 36 81 3
5 5 62 5 5 5 7 36 81 3
5 5 52 5 5 5 7 36 81 3
5 5 52 62 5 5 7 36 81 3
5 5 52 62 62 5 7 36 81 3
5 5 52 62 62 5 7 36 81 3
5 5 52 62 62 5 7 36 81 3
5 5 52 62 62 5 7 36 81 3
5 5 52 62 62 5 7 36 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 81 3
5 5 52 62 62 5 7 7 3 3
5 5 52 62 62 5 7 7 3 81
5 5 52 62 62 5 7 7 3 81
5 5 52 62 62 3 7 7 3 81
5 5 52 62 62 3 5 7 3 81
5 5 52 62 62 3 5 7 3 81
5 5 52 62 62 3 5 7 7 81
5 5 52 62 62 3 5 7 7 81
3 5 52 62 62 3 5 7 7 81
3 5 52 62 62 3 5 7 7 81
3 5 5 62 62 3 5 7 7 81
3 5 5 5 62 3 5 7 7 81
3 5 5 5 7 3 5 7 7 81
3 5 5 5 7 7 5 7 7 81
3 5 5 5 7 7 52 7 7 81
3 5 5 5 7 7 52 62 7 81
3 5 5 5 7 7 52 62 62 81
3 5 5 5 7 7 52 62 62 3
3 5 5 5 7 7 52 62 62 3
3 5 5 5 7 7 52 62 62 3
有点不熟悉这个排序,找不见错误,求大佬帮帮