《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 toutiao.com/i6800262027450253836/ 「编程艺术思维」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。

1、no code

项目地址:

https://github.com/kelseyhightower/nocode

这是一个 GitHub 上的项目,目前标星 34k。

它的牛逼之处在于它 基于轻量级跨平台全自动不可描述工具,采用了不可描述的高级语言语法,不用写一行代码,即可部署运行,提供检测、编译、打包、安装、运行一条龙服务,安全可靠。

看完代码后,国内外的程序员纷纷留言夸奖。

世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

真的是阅尽天下代码,心中已然无码!

2、洗牌算法

这个代码很简单,只有两行代码,但是却可以实现这个功能:对于给定的 n 个元素,生成的那个排列,每一个元素都能等概率地出现在每一个位置。

换句话说,每一个位置都能等概率地放置每个元素。

代码如下:

for(int i = n - 1; i >= 0 ; i -- )
swap(arr[i], arr[rand(0, i)]) // rand(0, i) 生成 [0, i] 之间的随机整数

3、睡眠排序

代码如下:

public class SleepSort {
public static void main(String[] args) {
int[] ints = {1,4,7,3,8,9,2,6,5};
SortThread[] sortThreads = new SortThread[ints.length];
for (int i = 0; i < sortThreads.length; i++) {
sortThreads[i] = new SortThread(ints[i]);
}
for (int i = 0; i < sortThreads.length; i++) {
sortThreads[i].start();
}
}
}
class SortThread extends Thread{
int ms = 0;
public SortThread(int ms){
this.ms = ms;
}
public void run(){
try {
sleep(ms*10+10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(ms);
}
}

它原理是构造 n 个线程,它们和这 n 个数一一对应。

初始化后,线程们开始睡眠,等到对应的数那么多个时间单位后各自醒来,然后输出它对应的数。

这样最小的数对应的线程最早醒来,这个数最早被输出。

等所有线程都醒来,排序就结束了。

不要问时间复杂度,时间复杂度在这个排序上已经毫无意义!

4、AI核心代码

while True:
print(input('').replace('吗','').replace('?','!'))

这段代码就是传说中的 价值一个亿的AI核心代码,来看一下效果。

世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

各位技术大神还知道哪些案例,欢迎留言补充:)

文章目录
  1. 1. 1、no code
  2. 2. 2、洗牌算法
  3. 3. 3、睡眠排序
  4. 4. 4、AI核心代码