1T数据快速排序!十种经典排序算法总结( 七 )
< originalArray.length; i++) {originalArray[i] = 0;}} else {for (int i = 0; i < originalArray.length; i++) {originalArray[i] = replaceArray[i];}}}11 复杂度及稳定性
文章插图
(其中:
- k表示计数排序中最大值和最小值之间的差值;
- l表示桶排序中桶的个数;
- d表示基数排序中最大值的位数 , r表示是多少进制;
- 希尔排序的时间复杂度很大程度上取决于增量gap sequence的选择 , 不同的增量会有不同的时间复杂度 。 文中使用的“gap=length/2”和“gap=gap/2”是一种常用的方式 , 也被称为希尔增量 , 但其并不是最优的 。 其实希尔排序增量的选择与证明一直都是个数学难题 , 而下图列出的是迄今为止大部分的gap sequence选择的方案)
文章插图12 小彩蛋:猴子排序在几十年的计算机科学发展中 , 诞生了很多优秀的算法 , 大家都在为了能开发出更高效的算法而努力 。 但是在这其中也诞生了一些仅供娱乐的搞笑算法 , 猴子排序就是其中的一种 。
猴子排序的实现很简单 , 随机找出两个元素进行交换 , 直到随机交换到最后能正确排好序的时候才会停止 。
【1T数据快速排序!十种经典排序算法总结】
public int[] bogoSort(int[] array) {if (array == null || array.length < 2) {return array;}Random random = new Random();while (!inOrder(array)) {for (int i = 0; i < array.length; i++) {int swapPosition = random.nextInt(i + 1);if (swapPosition == i) {continue;}array[i] = array[i] ^ array[swapPosition];array[swapPosition] = array[i] ^ array[swapPosition];array[i] = array[i] ^ array[swapPosition];}}return array;}private boolean inOrder(int[] array) {for (int i = 0; i < array.length - 1; i++) {if (array[i] > array[i + 1]) {return false;}}return true;}
推荐阅读
- 西部数据在CES 2021推出多款4TB容量的旗舰级SSD
- WhatsApp收集用户数据新政惹众怒,“删除WhatsApp”在土耳其上热搜
- “千店同开”引质量担忧,小米回应
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 企业|技术快速迭代倒逼知识产权“贴身”服务,上海首家AI商标品牌指导站入驻徐汇西岸
- 黑客窃取250万个人数据 意大利运营商提醒用户尽快更换SIM卡
- 阳狮报告:4成受访者认为自己的数据比免费服务更有价值
- 中消协点名大数据网络杀熟 反对利用消费者个人数据画像
- 学习大数据是否需要学习JavaEE
- 意大利运营商Ho Mobile被曝数据泄露
