堆排序heapsort

来源:互联网 发布:淘宝返利哪个最高 编辑:程序博客网 时间:2024/06/11 15:22
#include<iostream>using namespace std;void AdjustHeap(int 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[mpoint] > Array[spoint] ){int ntemp         = Array[mpoint];Array[mpoint]     = Array[spoint];Array[spoint]     = ntemp;spoint            = mpoint;}else{break;}}return;}void HeepSort(int Array[], int len){for ( int i = ( len / 2 - 1 ); i >= 0; i-- ){AdjustHeap( Array, i, len );}for ( int i = len -1; i > 0; i-- ){int ntemp = Array[0];Array[0]  = Array[i];Array[i]  = ntemp;AdjustHeap( Array, 0, i );}return;}int main(int argc, char *argv[]){int Array[9] = { 5, 4, 7, 3, 9, 1, 6, 8, 2};for ( int i = 0; i<9; i++)cout<<Array[i]<<" ";cout<<endl;HeepSort(Array, 9);for ( int i = 0; i<9; i++)cout<<Array[i]<<" ";return 0;}

原创粉丝点击