博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
归并排序——最省时的排序
阅读量:6342 次
发布时间:2019-06-22

本文共 1267 字,大约阅读时间需要 4 分钟。

/*因为归并排序至于O(n)的复杂度所以省时*/#include
#include
#include
#include
#include
#include
#include
#define N 100010#define MAXN 100010using namespace std;//将有二个有序数列a[first...mid]和a[mid...last]合并。void mergearray(int a[], int first, int mid, int last, int temp[]){ int i = first, j = mid + 1; int m = mid, n = last; int k = 0; while (i <= m && j <= n) { if (a[i] <= a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while (i <= m) temp[k++] = a[i++]; while (j <= n) temp[k++] = a[j++]; for (i = 0; i < k; i++) a[first + i] = temp[i];}void mergesort(int a[], int first, int last, int temp[]){ if (first < last) { int mid = (first + last) / 2; mergesort(a, first, mid, temp); //左边有序 mergesort(a, mid + 1, last, temp); //右边有序 mergearray(a, first, mid, last, temp); //再将二个有序数列合并 }}bool MergeSort(int a[], int n){ int *p = new int[n]; if (p == NULL) return false; mergesort(a, 0, n - 1, p); delete[] p; return true;}int main(){ //freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin); int cur1[]={ 1,4,7,8,5,2,3,6,9,0}; int cur2[12]; mergesort(cur1, 0, 9, cur2); for(int i=0;i<10;i++) cout<
<<" "; cout<

 

转载于:https://www.cnblogs.com/wuwangchuxin0924/p/5866375.html

你可能感兴趣的文章
2015.06.04 工作任务与心得
查看>>
icinga2使用587端口发邮件
查看>>
hpasmcli查看HP服务器内存状态
查看>>
极客工具
查看>>
【14】Python100例基础练习(1)
查看>>
boost bind使用指南
查看>>
/etc/fstab功能详解
查看>>
oracle高速缓存机制
查看>>
使用ntpdate更新系统时间
查看>>
Android M 特性 Doze and App Standby模式详解
查看>>
IE FF(火狐) line-height兼容详解
查看>>
谷歌Pixel 3吸引三星用户, 但未动摇iPhone地位
查看>>
python获取当前工作目录
查看>>
VUE中使用vuex,cookie,全局变量(少代码示例)
查看>>
grep -w 的解析_学习笔记
查看>>
量化交易之启航
查看>>
TX Text Control文字处理教程(3)打印操作
查看>>
CENTOS 7 如何修改IP地址为静态!
查看>>
MyCat分片算法学习(纯转)
查看>>
IO Foundation 3 -文件解析器 FileParser
查看>>