堆排序之最小堆

原创 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 ; }

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

最小堆及堆排序

头文件.h: #ifndef MINHEAP_H_INCLUDED #define MINHEAP_H_INCLUDED #define DefaultSize 20 ...

最大堆、最小堆、堆排序

最(大)小堆的性质: (1)是一颗完全二叉树,遵循完全二叉树的所有性质。 (2)父节点的键值(大于)小于等于子节点的键值 (3)在堆排序中我们通常用的是最大堆,最小堆通常用在优先队列中(尚未找到...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

最大堆、最小堆、堆排序

最(大)小堆的性质: (1)是一颗完全二叉树,遵循完全二叉树的所有性质。 (2)父节点的键值(大于)小于等于子节点的键值 (3)在堆排序中我们通常用的是最大堆,最小堆通常用在优先队列中(尚未找到...

最小堆和堆排序

#pragma once #ifndef _MINHEAP_H_ #define _MINHEAP_H_ #define DefaultSize 10 template class MinHeap ...

最小堆,堆排序(c++代码)

//minheap , heap sort #include #include #include #define HEAP_PARENT(i) ((i-1)/2) #define HEAP_L...

最小堆和最小堆排序

1、原理介绍:百度百科 2、最小堆的构造和添加#include #define N 9 // 最小堆得元素个数int minHeap[N]; // 存放最小堆的数组 int index1 = 0;...

PAT甲级.1125. Chain the Ropes (25)

题意 Given some segments of rope, you are supposed to chain them into one rope. Each time you may only...

最小堆解决Top K问题

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

堆树(最大堆、最小堆)详解

一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键值总是大于或等于任何一个...

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

堆排序的思想在堆排序(最大堆)已做说明,故不再赘述; 总之,思想就是首先进行建堆,由于这是最小堆,故而必须保证父节点都小于孩子节点,若不满足条件,则进行调节; 最后进行堆排序,不断将最小的提取出来...
  • xjm199
  • xjm199
  • 2014-01-08 21:39
  • 2868
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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