博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分治法排序
阅读量:7065 次
发布时间:2019-06-28

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

 

/*分治排序法的思想:简单引入两副已排好序的扑克牌,假设最上面的最小。则只需每次比较两副牌的最上面那一张的大小,永远取最小的,直到取完两副牌为止。为了方便,在两副牌的最后加入一张哨兵牌,值取为∞。*/#include
#define INF 100000using namespace std;//合并void merge(int a[], int l, int q, int r){ int n1 = q - l + 1, n2 = r - q, *L, *R, i, j; L = new int[n1 + 1]; R = new int[n2 + 1]; for (i = 0; i < n1; i++)L[i] = a[l + i]; for (i = 0; i < n2; i++)R[i] = a[q + i + 1]; L[n1] = INF; R[n2] = INF; i = 0; j = 0; for (int k = l; k <= r; k++) { if (L[i] < R[j]) { a[k] = L[i]; i++; } else { a[k] = R[j]; j++; } } delete[] L; delete[] R;}//分解void merge_sort(int a[], int l, int r){ if (l < r) { int q = (l + r) >> 1; merge_sort(a, l, q); merge_sort(a, q + 1, r); merge(a, l, q, r); }}int main(){ int a[5] = { 5, 4, 3, 2, 1 }; merge_sort(a, 0, 4); cout << "合并排序后数组为:\n"; for (int i = 0; i < 5; i++) cout << a[i] << " "; system("pause"); return 0;}

 

转载于:https://www.cnblogs.com/littlehoom/p/3515481.html

你可能感兴趣的文章
微信JS 关闭网页
查看>>
[AAuto]给百宝箱增加娱乐功能
查看>>
Tigase XMPP Server源码部署
查看>>
Intellij IDEA创建Maven Web项目
查看>>
java 7 入门书籍
查看>>
Android Pdf文档的生成、显示与打印
查看>>
SpringMVC三种异常处理方式
查看>>
w命令
查看>>
golang使用oracle碰到go/lib/time/zoneinfo.zip: no such file or directory
查看>>
quartz定时任务时间设置描
查看>>
ES6常用语法
查看>>
https://www.jianshu.com/p/dbffae16ba0b
查看>>
微信,QQ这类IM app怎么做——谈谈Websocket
查看>>
在Ubuntu 11.04中安装Openresty
查看>>
JAVA常见的面试题
查看>>
《Python高效开发实战》实战演练——建立应用2
查看>>
java: -source 1.6 中不支持 switch 中存在字符串.....
查看>>
Confluence 6 空间
查看>>
lua-resty-http上传数据
查看>>
heartbeat+ldirectord实现web与dns的高可用性
查看>>