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

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

 

1 #include 
2 using namespace std; 3 4 // 归并排序 5 void Merge(int a[],int b[],int i,int m,int n) 6 { 7 int j,k; 8 for(j = m+1,k=i;i<=m&&j<=n;k++) 9 {10 if(a[i] < a[j]) 11 b[k] = a[i++];12 else 13 b[k] = a[j++];14 } 15 16 if(i<=m) 17 for(int p=i;p<=m;p++,k++) b[k] = a[p];18 if(j<=n) 19 for(int p=j;p<=n;p++,k++) b[k] = a[p];20 }21 22 void copyArray(int a[],int b[],int s,int e)23 {24 for(int i = s;i<=e;i++)25 b[i] = a[i];26 }27 void Merge_Sort(int a[],int b[],int s,int t)28 {29 if(s == t) b[s] = a[s];30 else{31 int m = (s + t)/2;32 Merge_Sort(a,b,s,m);33 Merge_Sort(a,b,m+1,t);34 Merge(b,a,s,m,t); 35 copyArray(a,b,s,t); // 减少一个中间数组的空间开销36 }37 }38 39 void main()40 {41 int a[10] = {
5,4,3,2,-1,9,10,15,8,6};42 int b[10];43 Merge_Sort(a,b,0,9);44 for(int i=0;i<10;i++)45 cout << a[i] << endl;46 }

 

1 #include 
2 #include
3 using namespace std; 4 // 大顶堆排序 5 6 void HeapAdjust(int a[],int p,int size) 7 { 8 int lchild = 2*p; 9 int rchild = 2*p+1;10 int max = p;11 if(p<=size/2)12 {13 if(a[max] < a[lchild] && lchild <=size) 14 max = lchild;15 if(a[max] < a[rchild] && rchild <=size) 16 max = rchild;17 if(max != p)18 {19 swap(a[max],a[p]);20 HeapAdjust(a,max,size);21 }22 }23 }24 25 void HeapSort(int a[],int s,int size)26 {27 // 建堆28 for(int i=size/2;i>=s;i--)29 HeapAdjust(a,i,size);30 31 // 调整32 for(int i=size;i>=s;i--)33 {34 swap(a[s],a[i]);35 HeapAdjust(a,s,i-1);36 }37 }38 39 void main()40 {41 int a[]= {
5,1,4,3,2,-1,9,10,-15,19,20};42 43 HeapSort(a,1,10);44 for(int i=1;i<=10;i++)45 cout << a[i] << endl;46 }

 

 

与书上的代码有点差别,个人理解的差别吧...

转载于:https://www.cnblogs.com/xuxu8511/archive/2012/04/10/2440211.html

你可能感兴趣的文章
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
解决响应式布局下兼容性的问题
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
[工具] Sublime Text 使用指南
查看>>
Web服务器的原理
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>