堆排序 第7节 堆排序练习题 <!--more--> 对于一个int数组,请编写一个堆排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: [1,2,3,5,2,3],6 [1,2,2,3,3,5] Java (javac 1.7) 代码自动补全 1 im ...
分类:
编程语言 时间:
2017-03-07 20:46:20
阅读次数:
217
具体解析可参见:http://bubkoo.com/2014/01/14/sort-algorithm/heap-sort/ ...
分类:
编程语言 时间:
2017-03-03 23:54:08
阅读次数:
295
这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序,分享给大家一起学习。 分类1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序( ...
分类:
编程语言 时间:
2017-02-27 01:12:47
阅读次数:
372
之前学习数据结构与算法时花了三天时间整理九大排序算法,并采用Java语言来实现,今天第一次写博客,刚好可以把这些东西从总结的文档中拿出来与大家分享一下,同时作为自己以后的备忘录。 1.排序算法时间复杂度、稳定性分类: 2.排序算法问题描述与实现 2.1冒泡排序(交换排序-稳定) 【问题描述】对于一个 ...
分类:
编程语言 时间:
2017-02-26 18:47:11
阅读次数:
302
一、归并排序算法 基本思想: 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序示例: 合并方法: 设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度 ...
分类:
编程语言 时间:
2017-02-21 00:40:59
阅读次数:
217
堆排序的时间复杂度是O(nlgn),与归并排序一样,但它又与插入排序一样具有空间原址性:任何时候都只需要常数个额外的元素空间存储临时数据。 什么是堆?一般堆用数组存储,表现出近似完全二叉树形式,树上的每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的且从左至右填充。 maxHeapify ...
分类:
编程语言 时间:
2017-02-20 22:34:59
阅读次数:
164
1、希尔排序(1)、算法思想:希尔排序是插入排序的改良算法,增加了一个步长step,每次插入排序使步长为step的元素形成一个递增序列,然后缩小增量,继续插入,直至step=1时,就是插入排序了,此时排序完成;算法模型:(2)、代码实现#include<stdio.h>
voidinsertSort(in..
分类:
其他好文 时间:
2017-02-17 15:42:00
阅读次数:
206
地址 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序 ...
分类:
编程语言 时间:
2017-02-11 11:13:54
阅读次数:
170
defadjust(a,root,n):
k=a[root-1]
c=root*2
whilec<=n:
ifc+1<=nanda[c]>a[c-1]:
c+=1
ifa[c-1]<=k:
break
a[c/2-1]=a[c-1]
c*=2
a[c/2-1]=k
defheapSort(a):
n=len(a)
foriinxrange(n/2,0,-1):
adjust(a,i,n)
foriinxrange(n-1,0,-1):
a[0],a[i]=a[i],a[0..
分类:
编程语言 时间:
2017-02-10 10:50:31
阅读次数:
173
说明:转载于http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) ...
分类:
编程语言 时间:
2017-02-06 13:19:28
阅读次数:
281