堆排序相关
代碼如下
#include<bits/stdc++.h> using namespace std;#define max_len 1000void heapify( int tree [] , int n , int i ){if( i >= n )return ;int c1 = 2 * i + 1 ;int c2 = 2 * i + 2 ;int maxx = i ;if( c1 < n && tree[c1] > tree [maxx] ) maxx = c1 ;if( c2 < n && tree[c2] > tree [maxx] ) maxx = c2 ;if ( maxx != i ){swap( tree[maxx] , tree[i] );heapify( tree , n , maxx );} }void build_heap(int tree[], int n){int last_node = n-1 ;int parent = ( last_node - 1 ) / 2;for(int i = parent;i>=0;i-- ){heapify(tree , n , i );} }void heap_sort(int tree[],int n){build_heap(tree,n);for(int i=n-1;i>=0;i--){swap(tree[i],tree[0]);heapify(tree,i,0);} }int main(){int tree[]={2 ,5 ,3 ,1 ,10 ,4 };int n=6;heap_sort(tree,n);//heapify( tree , n , 0);for(int i=0;i<n;i++)printf("%d\n",tree[i]);return 0;}轉載于:https://www.cnblogs.com/--ChenShou--/p/10847609.html
總結
- 上一篇: 洛谷P4742(tarjan缩点+拓扑D
- 下一篇: Internet 网络协议族