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


    点击上方蓝字设为星标

    下面开始今天的学习~

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

    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

    知乎:程序员吴师兄

    一个正在学习算法的人,致力于将算法讲清楚!

    长按下图二维码关注,和你一起领悟算法的魅力

  • 相关阅读:
    多表代换密码
    仿射变换
    LeetCode实战练习题目
    13.线性同余方程 扩展欧几里得算法
    12.扩展欧几里得算法
    11.快速幂求逆元
    10.快速幂
    9.筛法求欧拉函数
    8.欧拉函数
    7.最大公约数 欧几里得算法,也叫辗转相除法
  • 原文地址:https://www.cnblogs.com/csnd/p/16675024.html
Copyright © 2020-2023  润新知