#include<iostream>
using namespace std;
void Merge(int a[], int first, int mid, int last)
{
int *b = new int[last - first + 1];
int first1 = first;
int last1 = mid;
int first2 = mid + 1;
int last2 = last;
int index = 0;
while (first1 <= last1&&first2 <= last2)
{
if (a[first1] < a[first2])
b[index++] = a[first1++];
else
b[index++] = a[first2++];
}
while (first1<=last1)
b[index++] = a[first1++];
while (first2<=last2)
b[index++] = a[first2++];
for (int i = 0; i < last - first + 1; i++)
a[first + i] = b[i];
delete[] b;
}
void MergeSort(int a[], int first, int last)
{
if (first < last)
{
int mid = (first + last) / 2;
MergeSort(a, first, mid);
MergeSort(a, mid + 1, last);
Merge(a, first, mid, last);
}
}
int main()
{
int array[] = { 34, 65, 12, 43, 67, 5, 78, 10, 3, 70 };
int len = sizeof(array) / sizeof(int);
cout << "the original array are:" << endl;
for (int k = 0; k < len; k++)
cout << array[k] << " ";
cout << endl;
MergeSort(array, 0,len-1);
cout << "The sorted array are:" << endl;
for (int k = 0; k<len; k++)
cout << array[k] << ",";
cout << endl;
return 0;
}
基本排序算法--归并排序
最新推荐文章于 2024-02-07 10:01:44 发布