【面试准备】堆排
来源:互联网 发布:战舰世界mac 国服切换 编辑:程序博客网 时间:2024/06/01 08:20
#include <iostream>using namespace std;void AdjastHeapSort(int a[],int i,int n){//调整节点i,数组共有n个节点if(n == 1||i >(n-2)/2){return ;}int iLeft = 2*i+1;//i从0开始int iRight = 2*i+2;if(iRight<=n-1){if(a[i]>=a[iLeft]&&a[i]>=a[iRight]){return ;}if(a[i]<a[iLeft]&&a[iRight]<=a[iLeft]){int temp = a[iLeft];a[iLeft] = a[i];a[i] = temp;AdjastHeapSort(a,iLeft,n);return ;}if(a[i]<a[iRight]&&a[iLeft]<=a[iRight]){int temp = a[iRight];a[iRight] = a[i] ;a[i] = temp;AdjastHeapSort(a,iRight,n);return ;}}else{if(a[i]>=a[iLeft]){return ;}else{int temp = a[iLeft];a[iLeft] = a[i];a[i] = temp;AdjastHeapSort(a,iLeft,n);return ;}}}void CreateHeap(int a[],int n){int iFirst = (n-2)/2;for(;iFirst>=0;iFirst--){AdjastHeapSort(a,iFirst,n);}}void HeapSort(int a[],int n){CreateHeap(a,n);int temp;for(int i = 0;i<n-1;i++){temp = a[n-i-1];a[n-i-1] = a[0];a[0] = temp;AdjastHeapSort(a,0,n-i-1);}}int main() {int a[] = {1,2,3,5,343,5,3,2,4,2,2,23};HeapSort(a,12);for(int i = 0 ; i < 12 ;++ i){cout<<a[i]<<" ";}cout<<endl;return 0;}
0 0
- 【面试准备】堆排
- 【面试准备】快排
- 面试题目-堆排、快排、二分查找
- 准备面试需要知道的经典算法--快排
- 堆排
- 堆排
- 堆排
- 堆排
- 堆排
- 准备面试需要知道的经典算法--堆排序
- 面试准备
- 面试准备
- 面试准备
- 面试准备
- 面试准备
- 面试准备
- 面试准备
- 面试准备
- 微信公众平台消息类型处理php版(方蓓工作室)
- 【卡特兰数】【数论】
- Reverse Nodes in k-Group leetcode
- UVA10905
- HBase性能优化方法总结
- 【面试准备】堆排
- HBase key设置加快查询速度小谈
- poj 1861 Network
- 优化hbase的查询操作-大幅提升读写速率
- mysql数据库连接池配置
- 1080 - Binary Simulation[树状数组]
- Binder框架及运用详解
- Tdifw 移植到win7
- BootStrap -- Grid System