几种排序的性能测试
闲的无聊,预习数据结构的时候看到了几种排序的性能分析,就自己做了一下。
测试结果如下:单位(ms) RE:用时过长或爆栈
可见,快排在完全随机的数据下性能是最优的,在已经排序或者已经基本排序的前提下,即使是加了随机化的快排也会很慢,堆排在已经排序的情况下比随机情况下快了一倍多,归排也是,而且速度比堆排快很多...
分类:
编程语言 时间:
2014-12-28 15:36:14
阅读次数:
157
Counter类:计数器IntPk中包含主键publicclassCounterextendsIntPK{
privateintcount;
publicintgetCount(){
returncount;
}
publicvoidsetCount(intcount){
this.count=count;
}
}MinHeap类:最小堆排序类packagecom.ryx.incantation.model;
importcom.ryx.incantation.en..
分类:
编程语言 时间:
2014-12-28 02:01:43
阅读次数:
232
以下为代码实现function heapsort( array ){ bulidHeap( array ); for( var i = array.length-1; i >= 0; --i ){ swap( array, 0, i ); adjust( ar...
分类:
编程语言 时间:
2014-12-27 21:41:55
阅读次数:
230
选择排序的基本思想是:每一趟从n-i+1 (i=1,2,…,n)个元素中选取一个关键字最小的元素作为有序序列中第i个元素。本节在介绍简单选择排序的基础上,给出了对其进行改进的算法堆排序。1.简单选择排序 a:算法描述 简单选择排序的基本思想非常简单,即:第一趟,从n个元素中找出关键字最小...
分类:
编程语言 时间:
2014-12-23 21:04:58
阅读次数:
205
堆排序是对简单选择排序算法的一种改进,在每次选择最小记录的同时,根据比较结果对其他记录做出相应的调整。堆是具有下列性质的完全二叉树:每个节点的值都大于(小于)或者等于其左右孩子节点的值,为大顶堆(小于)。堆排序的基本思想是:从最后一个含有叶子节点的节点开始将待排序列构造成一个堆,然后将堆顶元素与末尾...
分类:
编程语言 时间:
2014-12-23 10:10:55
阅读次数:
182
如果说希尔排序是简单插入排序的升级,堆排序是简单选择排序的升级,那么快速排序就是冒泡排序的升级了。相对于冒泡排序,快速排序增大了记录比较和移动的距离,将关键字较大的记录移动到后面,较小的移动到前面,从而减少总的比较和移动次数。快速排序的基本思想:通过每一趟排序都将待排序的记录按照选定的关键字分成两部...
分类:
编程语言 时间:
2014-12-22 10:51:47
阅读次数:
173
一、数组转换成堆 那么首先要解决的问题就是给数组排序,如何转换成二叉树的?转换方法如图:数组 int a[],包含元素a[0],a[1],a[2],a[3].....等等。转换成二叉树: 图还是比较形象的,其实就是依次从堆顶向下排,但是有一个原则,就是上一层没有排满的时候,下一层不会有元素...
分类:
编程语言 时间:
2014-12-16 18:38:04
阅读次数:
243
经典排序算法 - 堆排序Heap sort
堆排序有点小复杂,分成三块
第一块,什么是堆,什么是最大堆
第二块,怎么将堆调整为最大堆,这部分是重点
第三块,堆排序介绍
第一块,什么是堆,什么是最大堆
什么是堆
这里的堆(二叉堆),指得不是堆栈的那个堆,而是一种数据结构。
堆可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可...
分类:
编程语言 时间:
2014-12-16 13:35:14
阅读次数:
219