我的c\c++之旅(三)——堆排序

来源:互联网 发布:淘宝怎么转接人工服务 编辑:程序博客网 时间:2024/05/22 12:53

堆排序

#define LEFT(i)     (2 * (i) + 1)void Max_Heapify(int *sequence, int n, int i){    int child, tmp;     for(tmp = sequence[i]; LEFT(i) < n; i = child) {child = LEFT(i);if(child != n-1 && sequence[child+1] > sequence[child])child++;if(tmp < sequence[child])sequence[i] = sequence[child];elsebreak;}sequence[i] = tmp;}void Build_Max_Heap(int *sequence, int n){    int i;    for(i = n/2; i >= 0; i--)        Max_Heapify(sequence, n, i);}void Heap_Sort(int *sequence, int n){    int i;    Build_Max_Heap(sequence, n);    for(i = n-1; i > 0; i--) {        int tmp = sequence[0];        sequence[0] = sequence[i];        sequence[i] = tmp;        Max_Heapify(sequence, i, 0);    }}


0 0
原创粉丝点击