前一段时间师姐在看大华数据结构这本书,当看到堆排序是她问我,当时我觉得堆排序很简单,无非就是堆顶和堆尾对换,并输出最后一个,剩下的进行堆调整再一次循环下去。但是她又问道怎么实现堆调整,当时有点炉子,但是当我真正想的时候,却出现了很多问题,正好最近实现排序算法,所以今天就详细说说堆排序的具体。堆: ....
分类:
编程语言 时间:
2015-10-19 17:04:56
阅读次数:
216
排序算法大致有直接插入排序、折半插入排序、Shell排序、归并排序、直接选择排序、堆排序、冒泡排序、快速排序、桶式排序、基数排序等这些种,各个算法都有其优异性,大家不妨自己看看。下面贴上每个算法的简单讲解和实现: 1.直接选择排序(DirectSelectSort):其关键就是对n个数据要进行n-1...
分类:
编程语言 时间:
2015-10-18 23:10:09
阅读次数:
307
排序算法大致有直接插入排序、折半插入排序、Shell排序、归并排序、直接选择排序、堆排序、冒泡排序、快速排序、桶式排序、基数排序等这些种,各个算法都有其优异性,大家不妨自己看看。下面贴上每个算法的简单讲解和实现: 1.直接选择排序(DirectSelectSort):其关键就是对n个数据要进行n-1...
分类:
编程语言 时间:
2015-10-17 21:55:39
阅读次数:
264
只考虑int类型的排序,以后考虑泛型实现。 1 public class Heap { 2 3 public int heap_size;//在build_max_heap中初始化,由heap_sort自动调用 4 5 public int parent(int ...
分类:
编程语言 时间:
2015-10-13 20:49:34
阅读次数:
226
堆排序:时间复杂度:O(nlogN)数据结构:堆,可以认为是一个完全二叉树特点:序号为i节点的父节点序号是i/2;左孩子节点序号是2*i;右孩子节点序号为2*i+1;使用对排序的步骤:1.构造堆(全部排序)2.构造固定大小的堆,然后依次处理剩余元素(TopN)
分类:
编程语言 时间:
2015-10-12 19:23:04
阅读次数:
128
最小的n个和Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 136(41 users)Total Accepted: 38(32 users)Rating: Special Judge: NoDescription给定A、B两个数列,各包含...
分类:
编程语言 时间:
2015-10-11 15:18:20
阅读次数:
203
堆排序是一种集合了插入排序与归并排序的优点的排序算法,即有不错的渐近运算上限,又不用占用额外的运行空间。简单的说,它的排序思想如下:从一个数组中选出最大的数,然后在剩余的数里选出最大的数,如此循环,直到数组被穷尽,即可得到有序的数组。根据这个思路,很容易想到其复杂度:第一步,从n个数里选出最大的数,...
分类:
编程语言 时间:
2015-10-10 07:57:22
阅读次数:
176
http://blog.csdn.net/SJF0115/article/details/8610201前序:(二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个节点与数组中存放该节点值的那个元素对应。树的每一层都是填满的,最后一层除外。树的根为a[1] (在这里是从1开始的,也可...
分类:
编程语言 时间:
2015-10-09 21:10:26
阅读次数:
274
#include#define LEFT(i) (2*(i))#define RIGHT(i) (2*(i)+1)#define length 10int A[length]={4,1,3,2,16,9,10,14,8,7};int heapsize=length;void MAX_HEAPIFY(...
分类:
编程语言 时间:
2015-10-09 16:58:21
阅读次数:
215