Java语言 面试中八大常见排序算法( 二 )


从算法描述来看 , 堆排序需要两个过程 , 一是建立堆 , 二是堆结果 。
说明:若想得到升序序列 , 则建立最大堆 , 若想得到降序序列 , 则建立最小堆 。
算法实现:

Java语言 面试中八大常见排序算法

文章插图
 
时间复杂度:
堆排序是不稳定的排序 , 其时间复杂度是O(nlogn) 。
 
归并排序基本思想:
是把待排序序列分为若干个子序列 , 每个子序列是有序的 , 然后再把有序子序列合并为整体有序序列 。
算法实现:
Java语言 面试中八大常见排序算法

文章插图
 
时间复杂度:
归并排序是稳定的排序 , 其时间复杂度为O(nlogn) 。
 
字基数排序基本思想:
将所有待排序列(正整数)统一为同样的数位长度 , 数位较短的数前面补零 。然后  , 从最低位开始 , 依次进行一次排序 。这样 , 从最低位一直到最高位排序完成以后 ,  数列就变成一个有序序列 。
算法实现:
Java语言 面试中八大常见排序算法

文章插图
 
时间复杂度:
基数排序是稳定的排序 , 其时间复杂度为O(d(n+r)) , d为位数 , r为基数范围 。
 

【Java语言 面试中八大常见排序算法】


推荐阅读