排序算法实现及复杂度分析(三)

3、选择排序

    选择排序的基本思想是:每一趟在n-i+1i=1,2,….,n-1)个记录中选取关键字最小的记录作为有序序列的第i个记录。属于选择排序的有简单选择排序、树形选择排序和堆排序等三种算法。

3.1、简单选择排序方法:

    简单选择排序是选择排序中最简单的一种。一趟简单选择排序的操作为:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第 i1<= i <= n)个记录交换。简单选择排序总的时间复杂度是O(n2)

3.2、树形选择排序: 

    树形选择排序又称锦标赛排序,是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录的关键字进行两两比较,然后在[n/2]个较小者之间进行两两比较,如此重复,直至选出最小关键字的记录为止。

它的时间复杂度为O(nlog2n),需要较多的辅助空间。

3.3、堆排序: 

    堆排序只需要一个记录大小的辅助空间,每个待排序的记录仅占用一个存储空间。堆排序在最坏情况下,其时间复杂度为O(nlogn)。堆排序方法对记录数较少的文件并不值得提倡,对n较大的文件还是很有效的,因为它运行时间主要耗费在建初始堆和建新堆时进行的反复“筛选”上。

 

4、归并排序

    归并排序是又一类不同的排序方法。“归并”的含义上将两个或两个以上的有序表组合成一个新的有序表。它的时间复杂度是O(nlogn)

      上面是用递归的方式实现的归并排序算法,下面是归并排序的非递归实现:

 

 

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