//合并两个序列
void mergeArray(int arr[], int first, int mid, int last, int temp[])
{
int i = first;
int j = mid + 1;
int m = mid ;
int n = last;
int k = 0;
while (i <= m && j<=n)
{
if (arr[i] <= arr[j])
temp[k++] = arr[i++];
else
temp[k++] = arr[j++];
}
while (i <= m)
temp[k++] = arr[i++];
while (j <= n)
temp[k++] = arr[j++];
for (i = 0; i < k; i++)
arr[first + i] = temp[i];
}
void mySort(int arr[], int first, int last, int temp[])
{
if (first < last)
{
int mid = (first + last) / 2;
mySort(arr, first, mid, temp);
mySort(arr, mid+1, last, temp);
mergeArray(arr, first, mid, last, temp);
}
}
bool mergeSort(int arr[], int len)
{
int*p = new int[len];
if (NULL == p)
return false;
mySort(arr, 0, len - 1, p);
delete[] p;
return true;
}
#include <iostream>
using namespace std;
//上述归并排序源码
int main()
{
int arr[] = { 2, 23, 32, 34, 45, 6, 5, 65, 7, 6, 87, 87, 8, 798, 34, 35, 46, 45, 65, 756, 876, 8, 7, 87, 87, 5, 34, 344, 3, 32 };
int len = sizeof(arr) / sizeof(int);
mergeSort(arr, len);
for (int i = 0; i < len; i++)
cout << arr[i] << " ";
cout << endl;
system("pause");
}
2 3 5 5 6 6 7 7 8 8 23 32 32 34 34 34 35 45 45 46 65 65 87 87 87 87 344 756 798 876 请按任意键继续. . .
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有