堆排序

来源:互联网 发布:springmvc源码包 编辑:程序博客网 时间:2024/04/29 23:24

第一次实现堆排序,花了近两个小时。

主要还是堆调整,原理网上很多,直接给出运行代码和结果:


代码:

#include <iostream>using namespace std;void adjustHeap(int number[],int k,int length){int t=number[k];int i;for(; k*2+1 < length; k=i){i=k*2+1;if(number[i] < number[i+1] && i<length-1){i++;}if(number[i] > number[k]){number[k]=number[i];number[i]=t;//}else{break;}}}void buildMaxHeap(int number[],int length){int i= (length>>1)-1;for(;i >= 0;i--){adjustHeap(number,i,length);}}void heapSort(int number[],int length){buildMaxHeap(number,length);for(int i=length-1; i>=0 ;i --){int temp=number[length-1];number[length-1] = number[0];number[0] = temp;adjustHeap(number,0,--length);}}int main(){int input[8]={2,1,4,3,99,100,56,909};heapSort(input,8);for(int i=0;i<8;i++){cout<< input[i] <<" ";}return 0;}

运行结果:


2 0
原创粉丝点击