文章标题

来源:互联网 发布:天猫是淘宝旗下的吗 编辑:程序博客网 时间:2024/06/03 09:26
void BuildMaxHeap(ElemType A[],int len){    for(int i = len/2 ; i > 0 ; i--) //从i= [n/2]~1,反复调整堆        AdjustDown(A,i,len);}void AdjustDown(ElemType A[],int k ,int len){    //函数AdjustDown将元素向下进行调整        A[0] = A[k];          //A[0]暂存        for(i = 2*k ; i <= len ; i*=2){   //沿key较大的子节点向下筛选            if(i < len && A[i] < A[i+1])                i++;                      //取key较大的子节点的下标            if(A[0] >= A[i])                  break;                    //筛选结束            else{                A[k] = A[i];                k = i;            }        }//for        A[k] = A[0];                    //被筛选结点的值放在最终位置。}void HeapSort(ElemType A[],int len){    BuildMaxHeap(A,len);               //初始建堆    for(i = len ; i > 1 ; i--){        //n-1趟的交换和建堆过程        Swap(A[i],A[1])               //输出堆顶元素(和堆底元素交换)        AdjustDown(A,1,i-1);          //整理,把剩余的i-1个元素整理成堆    }//for}