堆排序之最小堆

原创 2013年12月02日 11:24:45
最小堆要满足除了根结点外,所有的结点都大于父结点。(根结点最小)
实现最小堆的代码:

#include <iostream>

#include <cmath>

#define mx 50

using namespace std;

int a[mx] ;

int n ;

void adjust(int i) {   int child ;

  while(i <= n / 2)   {    child = 2 * i ;    if(child + 1 <= n && a[child] > a[child + 1])     child ++ ;    if(a[i] > a[child])     swap(a[i] , a[child]) ;    else      return ;    i = child ;   }

}

int main() {  while(cin >>n)  {   for(int i = 1; i <= n; i ++)    cin >> a[i] ;    for(int i = 1; i <= n; i ++)     cout << a[i] << " ";    cout << endl;   for(int i = n / 2; i >= 1; i --)     adjust(i) ;

  cout <<"----" << endl ;   for(int i = 1; i <=n ; i ++)    cout << a[i] << " ";   cout << endl;  }  return  0 ; }

最小堆和最小堆排序

1、原理介绍:百度百科 2、最小堆的构造和添加#include #define N 9 // 最小堆得元素个数int minHeap[N]; // 存放最小堆的数组 int index1 = 0;...
  • sddxqlrjxr
  • sddxqlrjxr
  • 2016年04月13日 14:28
  • 4183

堆排序(最小堆)--【算法导论】

堆排序的思想在堆排序(最大堆)已做说明,故不再赘述; 总之,思想就是首先进行建堆,由于这是最小堆,故而必须保证父节点都小于孩子节点,若不满足条件,则进行调节; 最后进行堆排序,不断将最小的提取出来...
  • xjm199
  • xjm199
  • 2014年01月08日 21:39
  • 4384

堆排序 两种实现(最小堆和最大堆)

堆排序算法是建立在二叉树的堆结构上的,通过交换堆(一维数组)中的元素,并进行上浮或下沉函数运算实现多次调整 堆排序算法的复杂度低,和快速排序属于相同速度级别的一种快速的排序算法 下面以最小堆和最大...
  • ltyqljhwcm
  • ltyqljhwcm
  • 2016年03月12日 23:31
  • 1450

topk--堆排序--小顶堆

【问题描述】 假设需要我们在一堆海量数据中找出排名前k的数据;最好的方法是用最小堆排序,直接用前k个数据建立一个小顶堆,然后遍历剩余的数, ①如果此数 ②如果此数>堆顶的数,则将此数和堆顶的数交...
  • suibianshen2012
  • suibianshen2012
  • 2016年07月14日 07:58
  • 1096

堆的操作和堆排序-最小堆实现递减排序-C++

#include #include #include using namespace std; //参考:http://blog.csdn.net/morewindows/article/detail...
  • SUNSHANGJIN
  • SUNSHANGJIN
  • 2014年09月04日 10:10
  • 800

TopK问题探索-最小堆JAVA实现

TopK问题是指从
  • tang9140
  • tang9140
  • 2014年08月16日 10:31
  • 1431

最小堆解决Top K问题

问题描述:有一组数据n个,要求取出这组数据中最大的K个值。 对于这个问题,解法有很多中。比如排序及部分排序,不过效率最高的要数最小堆,它的时间复杂度为O(nlogk)。 解题思路: 取出数组的前n...
  • wangshuang1631
  • wangshuang1631
  • 2016年11月18日 17:11
  • 2205

经典算法之四:堆排序

堆排序 Heap Sort   堆排序是一种选择排序,其时间复杂度为O(nlogn)。 堆的定义   n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 ...
  • hurmishine
  • hurmishine
  • 2017年01月04日 21:58
  • 590

数据结构基础加强之最小堆的实现与堆排序

最小堆的实现及堆排序
  • a815060271
  • a815060271
  • 2017年05月16日 19:15
  • 112

排序算法(三)堆排序原理与实现(小顶堆)

堆排序实际上是利用堆的性质来进行排序的,要知道堆排序的原理我们首先一定要知道什么是堆。 堆的定义: 堆实际上是一棵完全二叉树。 堆满足两个性质: 1、堆的每一个父节点都大于(或小于)其子节点;...
  • her__0_0
  • her__0_0
  • 2017年05月19日 00:17
  • 1421
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:堆排序之最小堆
举报原因:
原因补充:

(最多只允许输入30个字)