点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试资料

在算法的世界里,有许多高效率的排序算法,比如快速排序、归并排序、桶排序......它们大大提高了程序的性能。

但是,也有一些比较奇葩的排序算法,它们既不能做到高效率,也没有很好的可读性。那它们存在的意义是什么呢?因为有趣呀。

下面,让我们来介绍三种“异想天开”的排序算法。

1.睡眠排序

—————  第二天  —————

public static void sleepSort(int[] array){for (int num : array) {new Thread(() -> {try {Thread.sleep(num);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(num);}).start();}
}
public static void main(String[] args) {int[] array = {10,30,50,60,100,40,150,200,70};sleepSort(array);
}

  1. }

————————————

(小灰把自己的代码给大黄展示了)

2.猴子排序

或许这样说比较抽象,让我们来演示一下:

3.珠排序

见过算盘的人都知道,算盘上有许多圆圆的珠子被串在细杆上,就像下面这样:

如果把算盘竖起来,会发生什么呢?算盘上的小珠子会在重力的作用下滑到算盘底部,就像下面这样:

什么意思呢?我们来仔细说明一下:

在珠子下落之前,每一横排有几个珠子?如上图所示,每排珠子的数量分别是3, 2, 4, 5, 1,这个数列是无序的。

当珠子下落以后,每一横排有又几个珠子?如上图所示,每排珠子的数量变成了1, 2, 3, 4, 5,这个数列是有序的!

那么,我们可不可以模拟珠子下落的原理,对一组正整数进行排序呢?答案是可以的。

我们可以用二维数组来模拟算盘,有珠子的位置设为1,没有珠子的位置设为0。那么,一个无序的整型数组就可以转化成下面的二维数组:

接下来,我们模拟算盘珠子掉落的过程,让所有的元素1都落到二维数组的最底部:

最后,把掉落后的 “算盘” 转化成一维有序数组:

热门内容:   

  • 如何参与一个顶级开源项目    

  • 深入理解 Spring Cloud 核心组件与底层原理

  • 最强 Java Redis 客户端

  • 微服务 2.0 技术栈选型手册

  • 为什么魂斗罗只有128KB却可以实现那么长的剧情?

  • IDEA高级用法:集成JIRA、UML类图插件、SSH、FTP、Database管理...

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

漫画:三种 “奇葩” 的排序算法相关推荐

  1. 几种重要的排序算法——交换排序

    交换排序 所谓交换,是指根据序列中两个关键字比较的结果来对换这两个关键字在序列中的位置.交换排序本文介绍两种,冒泡排序(bubble sort)和快速排序. 冒泡排序 排序思路 每次比较两个相邻的元素 ...

  2. access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法

    排序算法 回顾 我们前面已经介绍了 3 种最常见的排序算法: java 实现冒泡排序讲解 QuickSort 快速排序到底快在哪里? SelectionSort 选择排序算法详解(java 实现) 然 ...

  3. 数据结构几种常见的排序算法

    学习过经典的冒泡排序算法后,我们将继续深入学习,了解更多算法排序 插入排序 直接插入排序 直接插入排序其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,指导所有记录插 ...

  4. 七种常见的排序算法总结

    目录 引言 1.什么是排序? 2.排序算法的目的是什么? 3.常见的排序算法有哪些? 一,插入排序 1.基本思想 2.代码实现 3.性能分析 4.测试 二,希尔排序(缩小增量排序) 1.基本思想 2. ...

  5. 视觉直观感受 7 种常用的排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较 ...

  6. 7 种常用的排序算法直观感受

    1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序 ...

  7. 视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

  8. 几种常用的排序算法之JavaScript实现

    文章目录 插入排序 二分插入排序 选择排序 选择排序 冒泡排序 快速排序 堆排序 归并排序 桶排序 计数排序 插入排序 <html> <script> /* 1)算法简介插入排 ...

  9. 通过视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

最新文章

  1. 深入地下,实地探访!不用人挖煤的智能煤矿长什么样?
  2. thinkphp查询
  3. 成功入职字节跳动!2021年冲刺年薪40w
  4. 256qam调制星座图_5G调制怎么实现的?一文读懂
  5. java+stream+源码分析_java8学习之Stream源码分析
  6. 2014年中国新闻业年度观察报告
  7. 消息人士:苹果正与比亚迪宁德时代洽谈电动汽车电池供应事宜
  8. QLCDNumber设置背景色和显示数字颜色【转载】
  9. Python题库编程记录
  10. mysql 如何避免间隙锁_mysql 间隙锁
  11. java堆栈队列api
  12. 同一个接口返回多种数据类型
  13. 集成 rootbeer 和 小米mix2s Root 流程
  14. 仓位管理之二: 凯利公式指导投资与多种资金管理方式
  15. 怎么学计算机自学,自学经验:如何学习计算机知识
  16. java通过POI快速读取excel大量数据的方式
  17. python可以word添加批注_如何用POI给word指定文本增加批注?
  18. Java和go加密,解密,Base64失败
  19. JupyterNotebook使用
  20. 计算机病毒金山毒霸,金山毒霸网络版成为计算机病毒的客星

热门文章

  1. YY的GCD 莫比乌斯反演
  2. CEGUI-----动画
  3. openstack安装在虚拟机上重启之后无法启动问题
  4. 把时间当作朋友(第一版)笔记
  5. Numpy入门教程:04. 数学函数
  6. 资料分享:送你一本《数据结构(C#语言版)》电子书!
  7. 【怎样写代码】复杂对象的组装与创建 -- 建造者模式(二):解决方案
  8. 遗传算法主程序(辅助)
  9. phpstudy2014 php7.0,phpstudy下载_phpStudy下载2014 官方版_php环境集成包 1.0_零度软件园...
  10. 10 行代码玩转 NumPy!