#include<iostream>
using namespace std;
void Merge(int r[], int low, int mid, int high)
{
int *B = new int[high - low + 1];
int i = low, j = mid + 1,k=0;
while (i <= mid && j <= high)
{
if (r[i] <= r[j])
{
B[k++] = r[i++];
}
else
{
B[k++] = r[j++];
}
}
while (i <= mid) B[k++] = r[i++];
while (j <= high) B[k++] = r[j++];
for (int i = low,k=0; i <= high; i++)
{
r[i] = B[k++];
}
delete []B;
}
void MergeSort(int r[], int low, int high)
{
if (low < high)
{
int mid = (low + high) / 2;
MergeSort(r, low, mid);
MergeSort(r, mid + 1, high);
Merge(r, low, mid, high); //先拆分,在融合
}
}
int main() {
int r[5] = {1,5,3,4,2};
MergeSort(r, 0, 4);
for (int i = 0; i < 5; i++)
{
cout << r[i] << " ";
}
return 0;
}
合并排序c++实现
最新推荐文章于 2025-05-24 00:32:08 发布