最小堆排序
来源:互联网 发布:淘宝怎么优化关键词 编辑:程序博客网 时间:2024/06/05 23:53
#include<stdio.h>const int INF = 0x7fffffff;void exchange(int &a,int &b){ int tmp; tmp = a; a = b; b = tmp;}void heapFrist(int *array,int k,int len){ if(array == NULL || k <=0 || len <= 0) return; int left,right; left = k*2; right = k*2+1; if(left<=len){ if(array[k]>array[left]){ exchange(array[k],array[left]); } heapFrist(array,left,len); } if(right<=len){ if(array[k]>array[right]){ exchange(array[k],array[right]); } heapFrist(array,right,len); } int fath = k>>1; if(fath>0&&array[fath]>array[k]){ exchange(array[k],array[fath]); if(left<=len&&array[k]>array[left]){ exchange(array[k],array[left]); } if(right<=len&&array[k]>array[right]){ exchange(array[k],array[right]); } }}void print(int *array,int k,int len){ printf("%d ",array[k]); if(k*2<=len) print(array,k*2,len); if(k*2+1<=len) print(array,k*2+1,len);}void heapScend(int *array,int k,int len){ if(array == NULL || k <=0 || len <= 0) return; int left,right; left = k<<1; right = k<<1|1; if(right<=len){ if(array[right]>array[left]){ exchange(array[left],array[k]); heapScend(array,left,len); } else{ exchange(array[right],array[k]); heapScend(array,right,len); } } else if(left<=len){ exchange(array[left],array[k]); heapScend(array,left,len); }}int main(){ int len,array[100]; while(scanf("%d",&len)>0) { for(int i=1; i<=len;i++) { scanf("%d",&array[i]); } heapFrist(array,1,len); //print(array,1,len); for(int i = 1; i<=len; i++) { printf("%d ",array[1]); array[1] = INF; heapScend(array,1,len); } printf("\n"); }}
0 0
- 堆排序 - 最小堆
- 最小堆和堆排序
- 堆排序(最小堆)
- 堆排序之最小堆
- 最小堆及堆排序
- 最小堆排序
- 最小堆排序法
- 最大/最小堆排序
- 最大最小堆排序
- 最小堆和最小堆排序
- 【最小堆】--排序 -- Timer 最小堆 举例
- 最大堆、最小堆、堆排序
- 最大堆、最小堆、堆排序
- 堆排序:最大堆与最小堆
- 最小(大)堆应用---堆排序
- 堆排序(最小堆)--【算法导论】
- 堆排序和优先队列【最小堆】
- 最小堆,堆排序(c++代码)
- jks读取密钥
- 高德、百度地图自定义底图
- 【人脸识别】人脸验证算法Joint Bayesian详解及实现(Python版)
- 利用PHP的Popen实现RRDTOOL作图的动态输出
- Cygwin使用之神器apt-cyg安装与使用
- 最小堆排序
- CentOS7安装MySQL冲突和问题解决小结
- Java正则表达式学习
- autonomous_transaction
- UESTC 87 Easy Problem With Numbers(扩展欧几里得+线段树)
- 学习笔记
- lib与dll文件的区别与联系
- Android--焦点问题-ListView中item及其子控件无法响应点击事件
- Eclipse与Android Studio最实用最常用快捷键集锦