从算法描述来看 , 堆排序需要两个过程 , 一是建立堆 , 二是堆结果 。
说明:若想得到升序序列 , 则建立最大堆 , 若想得到降序序列 , 则建立最小堆 。
算法实现:
文章插图
时间复杂度:
堆排序是不稳定的排序 , 其时间复杂度是O(nlogn) 。
归并排序基本思想:
是把待排序序列分为若干个子序列 , 每个子序列是有序的 , 然后再把有序子序列合并为整体有序序列 。
算法实现:
文章插图
时间复杂度:
归并排序是稳定的排序 , 其时间复杂度为O(nlogn) 。
字基数排序基本思想:
将所有待排序列(正整数)统一为同样的数位长度 , 数位较短的数前面补零 。然后 , 从最低位开始 , 依次进行一次排序 。这样 , 从最低位一直到最高位排序完成以后 , 数列就变成一个有序序列 。
算法实现:
文章插图
时间复杂度:
基数排序是稳定的排序 , 其时间复杂度为O(d(n+r)) , d为位数 , r为基数范围 。
【Java语言 面试中八大常见排序算法】
推荐阅读
- JavaScript 表单验证如何实现的?
- javascript简单的正则表达式应用
- 求职|求职技巧:面试是,自我介绍,如此吹捧自大要不得
- Java代码获取数据库表名、字段名、字段类型及注释等信息
- 梦到面试成功什么意思 梦见面试失败是不是有什么预示呢?
- 你知道C语言中的C是怎么来的吗?
- 面试宝典之Redis!
- 2019最新整理PHP面试题附答案
- C语言的位级运算
- JavaScript 究竟是如何工作的?