1 / 9
文档名称:

几种常见排序算法.doc

格式:doc   大小:31KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

几种常见排序算法.doc

上传人:文库旗舰店 2019/10/13 文件大小:31 KB

下载得到文件列表

几种常见排序算法.doc

文档介绍

文档介绍:Java当中有以下几种常见排序算法:插入排序(直接插入排序、链表插入排序、分段/二分/折半插入排序、希尔排序/缩小增量排序)、冒泡排序、快速排序、简单选择排序、归并排序、二叉树排序、基数排序等。(1)复杂度比较表1几种常见排序算法的复杂度算法名称平均情况最好情况最坏情况辅助空间直接插入排序O(n^2)O(n)O(n^2)O(1)希尔排序O(nlog2n)~o(n^2)O(n^)O(n^2)O(1)冒泡排序O(n^2)O(n)O(n^2)O(1)快速排序O(nlog2n)O(nlog2n)O(n^2)O(n)简单选择排序O(n^2)O(n^2)O(n^2)O(1)堆排序O(nlog2n)O(nlog2n)O(nlog2n)O(1)归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)     基数排序O(n)O(n)O(n)O(1)     什么是排序算法的稳定性? 假设在待排序的记录中,有若干个相同的元素,如果排序后它们的相对位置并没有发生变化,则说明该排序是稳定的。  (2)稳定性比较插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的,选择排序、希尔排序、快速排序、堆排序是不稳定的。(3)其他方面比较插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。反而在这种情况下,快速排序反而慢了。当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。若待排序的记录的关键字在一个明显有限范围内时,且空间允许时用桶排序。当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。宜用归并排序。当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。=============================================================================相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):1、稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,a2,a3,a5就不是稳定的了。2、内排序和外排序在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。3、算法的时间复杂度和空间复杂度所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。=============================================================================一、插入排序包括:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就