java 八种排序算法 阅读目录 1.直接插入排序 2.希尔排序 3.简单选择排序 4.堆排序 5.冒泡排序 6.快速排序 7.归并排序 8.基数排序 回到目录 1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。 将第一个数和第二个数排序,然后构成一个有序序列 将第三个 ...
分类:
编程语言 时间:
2017-04-30 14:06:04
阅读次数:
293
堆排序 1.堆排序是一种树形选择排序,在排序过程中,将待排序的记录r[1..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树的双亲结点和孩子结点之间的内在关系,在当前无序的序列中选择关键字最大(或者最小的)记录 1.1、先将无序队列,列成二叉树的的样子 1.2、建初堆。从n/2向上取整处开始调 ...
分类:
编程语言 时间:
2017-04-22 17:34:51
阅读次数:
297
这两天学习排序,简单的记录下,等看完之后再进行总结。 1.首先看了交换排序,顾名思义,也就是当无序时进行元素交换,从而达到元素有序。 【1】初级的是冒泡排序,冒泡排序的思想是:两两相邻的数据元素进行比较,如果反序则交换,直到有序为止,同时每一次比较之后较小(大)的数上浮,较大(小)的数下沉,因此命名 ...
分类:
编程语言 时间:
2017-04-20 19:29:38
阅读次数:
201
1.算法步骤: 2.代码实现: public static void heapSort(int[] arr){ for(int i=(arr.length-2)/2;i>=0;i--){ siftDown(arr,i,arr.length-1);//从最后一个非叶节点开始,自上向下比较,形成最大堆 ...
分类:
编程语言 时间:
2017-04-10 13:15:59
阅读次数:
192
//堆排序 不稳定 import java.util.Arrays; public class HeapSort { public static void main(String[] args) { int[] a={49,38,65,97,76,13,27,49,78,34,12,64}; int... ...
分类:
编程语言 时间:
2017-04-04 20:06:50
阅读次数:
275
堆排序基本思想(最大堆): 1. 将初始待排序关键字序列(R1,R2....Rn)构建成最大堆,此时堆为初始的无序堆; 2. 将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,......Rn-1)和新的有序区(Rn),且满足R[1,2...n-1]<=R[n]; 3. ...
分类:
编程语言 时间:
2017-03-22 22:42:57
阅读次数:
253
(一)插入排序 每次循环之前,前面i位总是有序的。 (二)冒泡排序 每次循环,跟无序子list的首位比,每次循环有一个最值沉到/浮到这个首位 (三)快速排序 每次抽第一个数为flag,然后调整成左边比他小,右边比他大,随后递归 (四) 堆排序 ...
分类:
编程语言 时间:
2017-03-19 16:12:40
阅读次数:
267
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
堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O(nlog2n) ,堆排序的堆序的平均性能较接近于最坏性能。 中心思想是在使用数组存储的完全二叉树内从下往上每 ...
分类:
编程语言 时间:
2017-01-10 21:22:59
阅读次数:
231