数据结构之排序算法特点总结

1.插入与冒泡排序的速度较慢,但是当参加排序的元素局部或整体有序时,能达到较快的速度,这时对于快速排序来说,反而会变慢

1.1对初始状态为递增序列的表按递增顺序排序,最省时间的是插入算法

1.2分别采用堆排序,快速排序,冒泡排序和归并排序,对初态为有序的表,则最省时间的是冒泡算法,

1.3对冒泡算法而言,初始序列为反序时交换次数最多。

2.当n较小时,对于稳定性不做要求时,宜采用选择排序,当对稳定性有要求时,宜选用插入或冒泡排序

3.待排序的记录关键字在一个明显的有限范围内时,且空间允许,使用桶排序

4.当n较大且关键字元素随机,对稳定性也无需求时采用快速排序

5.当n较大且关键字元素有序,对稳定性有要求,且当空间允许时,使用归并排序,否则(对稳定性无要求)用堆排序

6.如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序的序列,用堆排序方法最快。

6.1求前k个最大元素选堆排序较好

6.2 在具有n个元素的集合中找第k(1≤k≤n)个最小元素,应使用快速排序方法。

7.对n个记录的线性表进行快速排序为减少算法的递归深度,每次区分后,先处理较短的部分

7.1设待排序记录的个数为n,则快速排序的最小递归深度为log2n(向下取整)+1,最大递归深度n。

 

与初始序列之间的关系:

1.选择排序、二路归并、二分排序与初始序列无关,

2.冒泡、插入(?)、快速、希尔排序与原始序列有关

 

分类:

1.堆排序是选择类排序,实际上是一颗完全二叉树结点的层次序列

 2.在排序算法中每一项都与其它各项进行比较,计算出小于该项的项的个数,以确定该项的位置叫枚举排序

 

外部排序:

1.外排序的基本操作过程是生成有序归并串和归并。

 

 

其它:

1.在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该算法是不稳定的这个说法是错误的

2.堆未必是一颗平衡二叉树(对与根节点无要求)

3.在内部排序方法中,一趟排序后只有简单选择排序和冒泡排序可以选出一个最大(或最小)元素,并加入到已有的有序子序列中,但要比较n-1次。选次大元素要再比较n-2次,其时间复杂度是O(n2)。从10000个元素中选10个元素不能使用这种方法。而快速排序、插入排序、归并排序、基数排序等时间性能好的排序,都要等到最后才能确定各元素位置。只有堆排序,在未结束全部排序前,可以有部分排序结果。建立堆后,堆顶元素就是最大(或最小,视大堆或小堆而定)元素,然后,调堆又选出次大(小)元素。凡要求在n个元素中选出k(k<<n,k>2)个最大(或最小)元素,一般均使用堆排序。因为堆排序建堆比较次数至多不超过4n,对深度为k的堆,在调堆算法中进行的关键字的比较次数至多为2(k-1)次,且辅助空间为O(1)。

4.堆可以看作是n个结点的完全二叉树。而败者树是由参加比赛的n个元素作叶子结点而得到的完全二叉树。每个非叶(双亲)结点中存放的是两个子结点中的败者数据,而让胜者去参加更高一级的比赛。另外,还需增加一个结点,即结点0,存放比赛的全局获胜者。

5.冒泡排序结束的条件:当至多进行n-1趟起泡排序,或一趟起泡排序中未发生交换(即已有序)时,结束排序。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章