美文网首页
堆排序(最小堆)

堆排序(最小堆)

作者: 希崽家的小哲 | 来源:发表于2015-05-22 09:47 被阅读51次
#include<iostream>
#define SIZE 123456
#define K 100
using namespace std;
void swap(int *a,int *b){
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
void HeapAdjust(int array[],int i,int length)
{
    int left    = i*2;
    int right   = i*2+1;
    int largest = i;
    if (left<=length && array[left] < array[largest]) {
        largest     = left;
    }
    if (right<=length && array[right] < array[largest]) {
        largest     = right;
    }
    if (largest!=i) {
        swap(&array[largest], &array[i]);
        HeapAdjust(array, largest, length);
    }
}

void BuildHeap(int array[],int length)
{
    for (int i=length/2; i>=1; i--) {
        HeapAdjust(array, i, length);
    }
}

void HeapSort(int array[],int length)
{
    BuildHeap(array, length);
    for (int i=length; i>=2; i--) {
        swap(&array[i], &array[1]);
        HeapAdjust(array, 1, i-1);
    }
}
int main(){
    int test[] = {0,4,1,3,2,16,9,10,14,8,7};
    for(int i = 1; i <= 10; i++)
        cout<<test[i]<<"  ";
    cout<<endl;
    HeapSort(test,10);
    for(int i = 1; i <=10; i++)
        cout<<test[i]<<"  ";
    cout<<endl;
    return 0;
}

4 1 3 2 16 9 10 14 8 7
16 14 10 9 8 7 4 3 2 1
Program ended with exit code: 0

相关文章

  • 堆排序(最小堆)

    4 1 3 2 16 9 10 14 8 716 14 10 9 8 7 4 3 ...

  • 堆排序

    堆排序的思想(以最小堆为例): 给的无序数列,首先要将数组改造成符合最小堆关于最小堆的建造,从最后一个非叶结点开始...

  • 在长度为n的未排序数组中,找到最小的k个数

    下面我们讨论上述问题的解决思路: 思路一如果采用堆排序的构造最小堆,然后每次输出根结点元素后再调整最小堆然后反复调...

  • 【算法】排序(六)堆排序

    正文之前 这一篇文章介绍一下堆的概念,以及堆排序 基本概念、最大/最小堆堆排序分析 正文 1. 什么是堆 堆不是单...

  • 排序(六)— 堆排序

    堆排序基本思想是:堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元...

  • 常用Java排序算法详解

    Java 一、最小堆排序(MinHeapSort) 基本原理:对于给定的n个记录,初始时把这些记录看作一颗顺序存储...

  • 堆排序的堆类 --- Javascript实现

    堆排序 最大堆(儿子皆小于双亲) 最小堆(双亲皆小于儿子) 堆建立 构建堆调整函数(调整范围,索引以下的部分,至少...

  • 每周一个 Python 模块 | heapq

    专栏地址:每周一个 Python 模块 heapq 实现了适用于 Python 列表的最小堆排序算法。 堆是一个树...

  • 堆排序原理解析

    概述 堆排序时间复杂度为O(nlogn),使用一个数组进行存储。堆分为最大堆与最小堆 最大堆满足的条件 ​ ...

  • 常用Java排序算法详解

    一、最小堆排序(MinHeapSort) 基本原理:对于给定的n个记录,初始时把这些记录看作一颗顺序存储的二叉树,...

网友评论

      本文标题:堆排序(最小堆)

      本文链接:https://www.haomeiwen.com/subject/ngnlqttx.html