#include <iostream>
using namespace std;
int n; //定义数组长度全局变量
void Merge(int *B, int low, int mid, int high)
{
int *D = (int *) malloc (n * sizeof(int)); //辅助数组D
int i, j, k;
for (int i = low; i <= mid; i++)//给辅助数组D赋值
D[i] = B[i];
for (int i = mid +1; i <= high; i++)//给辅助数组D赋值
D[i] = B[i];
for (i = low, j = mid +1, k =i; i <= mid && j <= high; k++) //比较大小
{
if (D[i] <= D[j])
B[k] = D[i++];
else
B[k] = D[j++];
}
while (i <= mid) //比较之后剩余的直接复制到数组尾部
B[k++] = D[i++];
while (j <= high)
B[k++] = D[j++];
}
void MergeSort(int *A, int low, int high)
{
if (low < high)
{
int mid = (low + high)/2;
MergeSort(A, low, mid);
MergeSort(A, mid +1, high);
Merge(A, low, mid, high);
}
}
int main()
{
cout << "输入数组长度:";
cin >> n;
int *p = (int *)malloc((n) * sizeof(int));
cout << "输入各元素值:";
for (int i = 0; i < n; i++)
{
cin >> p[i];
}
MergeSort(p, 0, n-1);
cout << "归并排序结果为: ";
for (int i = 0; i < n; i++)
{
cout << p[i] << " ";
}
}
归并排序C++
最新推荐文章于 2024-05-15 01:12:59 发布