c++实现堆排序--从俺的java版本翻译过来
来源:互联网 发布:淘宝怎么买115会员2017 编辑:程序博客网 时间:2024/06/03 21:20
调整堆:
void AdjustHeap(int a[],int i,int size){int leftChild = 2 * i;int rightChild = 2 * i +1;int adjustIndex = i;//记录调整的位置if(i < size/2){if(leftChild < size && a[leftChild] >= a[adjustIndex]){adjustIndex = leftChild;}if(leftChild < size && a[rightChild] >= a[adjustIndex]){adjustIndex = rightChild;}if(adjustIndex != i){int temp = a[adjustIndex];a[adjustIndex] = a[i];a[i] = temp;AdjustHeap(a,adjustIndex,size);}}}
建立堆:
void BuildHeap(int a[],int size){for(int i= size / 2;i>=0;i--){AdjustHeap(a,i,size);}}
int *Sorted(int a[],int size){BuildHeap(a,size);for(int i = size - 1; i>0 ;i--){int tmp = a[0];a[0] = a[i];a[i] = tmp;AdjustHeap(a,0,i);}return a;}
int _tmain(int argc, _TCHAR* argv[]){int a[] ={0,11,12,3,4};//int* p = a;//cout<<*(p+2)<<endl;//*(p + 2) p指向的地址的基础上加2再取值 结果为:12//cout<<*p+2<<endl; //*p+2 p指向地址的值再加上2 结果为:2int k[10] ={-9,8,1,2,5,4,7,6,3,9};int *p = Sorted(k,10);for(int i=0;i<10;i++){cout<<" "<<*(p + i);}return 0;}
结果:
0 0
- c++实现堆排序--从俺的java版本翻译过来
- 快速排序 python从java版本翻译过来:
- 堆排序的C实现
- 堆排序的实现(c++)
- 堆排序算法的C语言版本
- 堆排序 java版本
- java版本 堆排序
- 堆排序的java实现
- 堆排序的JAVA实现
- Java 堆排序的实现
- 堆排序的JAVA实现
- 堆排序的JAVA实现
- 堆排序的Java实现
- 堆排序的java实现
- 堆排序的java实现
- 堆排序的java实现
- 堆排序的Java实现
- 堆排序的Java实现
- 【深度学习:目标检测】RCNN学习笔记(2):Rich feature hierarchies for accurate object detection and semantic segmentat
- 指针数组 例题
- SQLSERVER用无中生有的思想来替代游标
- 如何在win10的windows Defender中添加信任文件,使其免遭误删除的厄运
- 坦克大战小游戏(Java)
- c++实现堆排序--从俺的java版本翻译过来
- 《Hadoop管理一》checkpoint原理和过程
- HDU 4794 Arnold (Fib数模 n 的应用)——2013 Asia Changsha Regional Contest
- Hadoop Backup Node
- switch case应用-输入年月日判断当年第几天
- iOS10适配
- android 消息提醒控件之 Toast
- 一个通用的Makefile
- 【深度学习:目标检测】RCNN学习笔记(3):From RCNN to SPP-net