点击上方蓝字设为星标
下面开始今天的学习~

今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。
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] 之间的随机整数
我做了一个动画来帮你理解这个算法。
以上动画的制作参考了 liuyubobobo 之前写的一篇文章:神一般的算法,如果想更详细了解更多洗牌算法的介绍,可以点击进去看看。
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核心代码,来看一下效果。

各位技术大神还知道哪些案例,欢迎留言补充:)
-----------------------
公众号:五分钟学算法(ID:CXYxiaowu)
博客:www.cxyxiaowu.com
知乎:程序员吴师兄
一个正在学习算法的人,致力于将算法讲清楚!
长按下图二维码关注,和你一起领悟算法的魅力。

转载:https://blog.csdn.net/kexuanxiu1163/article/details/104057913