排序算法:堆排序
作者:互联网
// 算法1 :调整为最小堆,再申请空间存放排好序的数组 // T = O( NlogN ) void Heap_Sort ( ElementType A[], int N ) { BuildHeap ( A ); // O( N ) for ( i=0; i<N; i++ ) TmpA[i] = DeleteMin( A ); //弹出堆顶 O( logN ) for ( i=0; i<N; i++ ) A[i] = TmpA[i]; // O( N ) } // 算法2 :循环调整为最大堆,交换堆顶与最后一个元素,从大到小筛选 // T = O( Nlog logN ) void Heap_Sort ( ElementType A[], int N ) { for ( i=N/2; i>=0; i-- ) PercDown ( A, i, N ); //调整最大堆的函数,i:根结点,N:最后一个结点 for ( i=N-1; i>0; i-- ) { Swap( &A[0], &A[i] ); //最大元素放最后 PercDown ( A, 0, i ); // 剩下的元素调整成最大堆 } }
标签:结点,--,元素,堆排序,PercDown,算法,排序,调整 来源: https://www.cnblogs.com/Pio-GD/p/14380016.html