堆/堆排序
来源:互联网 发布:全速建站软件 编辑:程序博客网 时间:2024/06/04 19:21
<h1>原理参考:http://blog.csdn.net/morewindows/article/details/6709644</h1>
/**********************************************************///堆插入void MinHeapfixup(int a[],int n,int num){a[n] = num;int j,temp;temp = num;j = (n-1)/2;while (j >= 0 && n != 0){if(temp >= a[j])break;a[n] = a[j];n = j;j = (n-1)/2;}a[i] = temp;}//堆删除void MinHeapfixdown(int a[],int i,int n){int j,temp;temp = a[i];j = 2*i + 1;while (j < n){if(j+1 < n && a[j+1] < a[j])++j;if(temp <= a[j])break;a[i] = a[j];i = j;j = 2*i +1;}a[i] = temp;}void HeapDelete(int a[],int n){swap(a[0],a[n-1]);MinHeapfixdown(a,0,n-1);}//数组堆化void MakeHeap(int a[],int n){for (int i = n/2-1; i>=0; --i){MinHeapfixdown(a,i,n);}}//堆排序void HeapSort(int a[],int n){for (int i=n-1; i>=1; --i){swap(a[0],a[i]);MinHeapfixdown(a,0,i);}}int _tmain(int argc, _TCHAR* argv[]){int a[] = {9,12,17,30,50,20,60,65,4,19};int i = 0;cout<<"原数组"<<endl;while (i<10){cout<<a[i]<<" ";++i;}cout<<endl;MakeHeap(a,10);i = 0;cout<<"数组堆化"<<endl;while (i<10){cout<<a[i]<<" ";++i;}cout<<endl;HeapSort(a,10);i = 0;cout<<"堆化后排序"<<endl;while (i<10){cout<<a[i]<<" ";++i;}system("pause");return 0;}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 2011年影响中国通信行业发展的十件大事
- C#并行计算类Parallel的性能测试
- 如何使用九妹
- 看操作系统虚拟化原理总结篇——基本运行环境
- 从FileGDB中导出数据异常 000732
- 堆/堆排序
- spring jar包 官网下载方法
- js中的window对象
- java 算出所有满足乘积为一个数的素数(也就是质数)
- 在ubuntu上挂在服务器的samba共享目录
- 如果仅仅是为了学习java入门,请离SSH远点儿
- jquery实现类似百度的搜索input输入框
- 【C++ Primer每日一刷之六】数组
- 配置python命令tab键自动补全