建堆&堆排序-代码

来源:互联网 发布:行业研究 知乎 编辑:程序博客网 时间:2024/06/08 09:33

建堆&堆排序

#include <stdlib.h>#include <stdio.h>#include <vector>#include <string>#define MAX_SIZE 9using namespace std;void AdjustHeap(int array[], int i, int n){    int max_temp = array[i];    int j = 2 * i + 1; //left    while (j < n - 1) {        if (j < n - 1 && array[j + 1] > array[j]) {            j++;        }        if (max_temp > array[j]) {            break;        }        array[(j - 1) / 2] = array[j];        array[j] = max_temp;        j = 2 * j + 1;    }}int main(){    int array[MAX_SIZE] = {1, 6, 3, 4, 2, 9, 0, 8, 5};    for (int i = (MAX_SIZE - 2 / 2); i >= 0; i--) {        AdjustHeap(array, i, MAX_SIZE);    }        for (int i = 0; i < MAX_SIZE; i++) {        printf("%d\t", array[i]);    }    printf("\n");        for (int i = MAX_SIZE - 1; i > 0; i--) {        int temp = array[0];        array[0] = array[i];        array[i] = temp;        AdjustHeap(array, 0, i);    }    for (int i = 0; i < MAX_SIZE; i++) {        printf("%d\t", array[i]);    }    printf("\n");    return 0;}


1 0
原创粉丝点击