今天分享四个代码量很少, 但很牛逼很经典的算法或项目案例.
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 核心代码, 来看一下效果.
各位技术大神还知道哪些案例, 欢迎留言补充:)
来源: http://developer.51cto.com/art/202003/611948.htm