宁静以致远

之前写过一篇博客是教你几种基本的常见排序算法 ,就说到会有后续的文章出来,继续写写排序问题,参加一些公司的电话面试,还总是会问到写关于排序的问题,大多是关于堆排序,快排序或者海量数据排序,或者从很到的数字序列中找到些中间位置的数字,或者是前K个最小的数字等相关问题,今天正好有空写了写堆排序的代码,自己存储一下,也拿出来共享给大家! 堆排序的算法思路,网上一搜索一堆,本科的课本里面也有较为详细的讲解,这里直接拿出代码,供大家参考!高手可以直接略过,小弟这厢礼过去了~~~!!

;template<class Any>void SwapData(Any &a,Any &b){Any tmp=a;a=b;b=tmp;}template<class AnyType>void CreateHeap(AnyType array[],int sPoint,int len){while((2*sPoint+1)<len){int mPoint=2*sPoint+1;if((2*sPoint+2)<len){if(array[2*sPoint+1]<array[2*sPoint+2])mPoint=2*sPoint+2;}if(array[sPoint]<array[mPoint]){SwapData(array[sPoint],array[mPoint]);sPoint=mPoint;}elsebreak;}return ;}template<class AnyType>void HeadpSort(AnyType array[],int len){for(int i=(len/2-1);i>=0;i–)CreateHeap(array,i,len);for(int j=len-1;j>0;j–){SwapData(array[0],array[j]);CreateHeap(array,0,j);}return ;}template<class AnyType>void OutPut(AnyType array,int len){cout << array[0];for(int i=1;i<len;i++)cout << ” ” << array[i];cout << endl;}int main(){int array[]={5,4,7,3,9,1,8,6,10,2};HeadpSort(array,sizeof(array)/sizeof(int));OutPut(array,sizeof(array)/sizeof(int));return 0;}

,人,都有不能称心如意的时候,都有愿望落空的窘迫,

宁静以致远

相关文章:

你感兴趣的文章:

标签云: