码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序_C实现

时间:2018-12-04 01:02:10      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:com   调整   最大   分享   img   else   sort   图片   ++   

技术分享图片

#include<stdio.h>

//向下调整 
void HeapAdjust(int A[], int low, int high){
    int i, temp = A[low];
    for(i = low * 2; i < high; i *= 2){
        if(i < high && A[i] < A[i+1])
            i++;
        if(A[i] <= temp)
            break;
        else{
            A[low] = A[i];
            low = i;
        }
    }
    A[low] = temp;
}

void HeapSort(int A[], int n){
    int i, temp;
    //建堆 
    for(i = n/2; i > 0; i--)
        HeapAdjust(A, i, n);
    //将最大值放至数组末端 
    for(i = n-1; i > 0; i--){
        temp = A[1];
        A[1] = A[i+1];
        A[i+1] = temp;
        HeapAdjust(A, 1 ,i);
    }
}

int main(){
    int A[16]={0,5,6,4,3,2,6,4,4,6,5,3,22,6,1,-23};
    HeapSort(A, 16);
    for(int i=1; i<=15; i++)
        printf("%d ", A[i]);
    return 0;
} 

技术分享图片

 

堆排序_C实现

标签:com   调整   最大   分享   img   else   sort   图片   ++   

原文地址:https://www.cnblogs.com/exciting/p/10061866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!