C++实现堆排序
/*堆排序*/#include<iostream>usingnamespacestd;voidAdjustDown(int*array,size_tsize,size_tparent){size_tchild=parent*2+1;while(child<size){if(child+1<size&&array[child]<array[child+1]){++child;}if(array[child]>array[parent]){swap(array[child],array[parent]);parent=child;child=parent*2+1;}else{break;}}}voidHeapSort(int*array,size_tsize){//建堆for(inti=(size-2)/2;i>=0;--i){AdjustDown(array,size,i);}//选数据排序for(size_ti=0;i<size;++i){swap(array[0],array[size-i-1]);AdjustDown(array,size-i-1,0);}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。