标签:完全 gif bre 输出 heap event spl uil int
堆排序是一种树形选择排序,特点:L[1...n]视为一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲与孩子节点的内在关系,在当前无序区中选择关键字(最大或最小)元素。
大顶堆:L(i)>L(2i) && L(i)>L(2I+1)
小顶堆:L(i)<L(2i) && L(i)<L(2I+1)
例:
//建立大堆 void BuildMAxHeap(int a[], int len) { for(int i=len/2; i>0; i--) AdjustDown(a, i, len); } //将元素向下调整 void AdjustDown(int a[], int k, int len) { a[0]=a[k]; for(int i=2*k; i<=len; i*=2) { if(i<len && a[i]<a[i+1]) i++; if(a[0]>=a[i]) break; else a[k] = a[i]; k = i; } a[k]=a[0]; }
void HeapSort(int a[], int len) { BuildMAxHeap(a,len); for(int i=len; i>1; i--) { swap(&a[i], &a[1]); AdjustDown(a, 1, i-1);; } }
void HeapSort(int a[], int len) { BuildMAxHeap(a,len); for(int i=len; i>1; i--) { swap(&a[i], &a[1]); AdjustDown(a, 1, i-1);; } }
标签:完全 gif bre 输出 heap event spl uil int
原文地址:https://www.cnblogs.com/wyd-blogs/p/11484510.html