堆排序

来源:互联网 发布:求多维数组最大值 编辑:程序博客网 时间:2024/06/06 02:25
#include <iostream>using namespace std;#define N 8void HeapAdjust(int a[],int parent,int length) //建立大根堆算法{    int temp = a[parent];    int child = 2*parent+1;    while(child<length)    {        if(child+1<length && a[child]<a[child+1])            child++;        if(temp>=a[child])            break;        a[parent] = a[child];        parent = child;        child = 2*parent+1;    }    a[parent] = temp;}void HeapSort(int a[],int top)  //堆排序算法{    int i;    for(i=(N/2-1);i>=0;i--)    {        HeapAdjust(a, i, N);    }    for (i=N-1;i>=N-top;i--)    {        int temp = a[0];        a[0] = a[i];        a[i] = temp;        HeapAdjust(a,0,i);    }}int main(int argc, char const *argv[]){    int a[8] = {80,26,53,12,68,46,15,10};    HeapSort(a,8);    for(int i=0;i<8;i++)    {        cout<<a[i]<<" ";    }    cout<<endl;    return 0;}

这里写图片描述

原创粉丝点击