来自公众号:五分钟学算法

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

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核心代码,来看一下效果。

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

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

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

    快速傅里叶变换(FFT),核心算法用递归法几十行搞定. 计算机应用最为重要的算法之一,广泛应用于各种各样的工业和科学实践中.第一次看到递归算出快速傅里叶的时候,惊了很久.后来经过数学家的很多努力,有了 ...

  2. [转载]判断IE浏览器-世界上最短的代码

    最短的IE判定var ie=!-[1,]分析 以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的. var ie = !+"\v1";仅仅需要7bytes!参见这篇文章,& ...

  3. 8个很少用,但却很好用的 Python 库

    本文介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,可能会非常有帮助的 Python 库 为了配合上述 Python 库的使用,我们先从 Kaggle 上下载一个数据 -- Animal ...

  4. 8个很少用,但却很好用的 Python 库,一起来看看吧

    大家好,我是辰哥 今天介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,可能会非常有帮助的 Python 库 为了配合上述 Python 库的使用,我们先从 Kaggle 上下载一个数据 - ...

  5. 萌新初学java,自己写的剧本,求大佬帮忙纠正下语法上的错误,能让内容更完善些代码量更少些

    public static void main(String[] args) { Scanner shuxing = new Scanner(System.in);//默认:龙王杀手路明非 Syste ...

  6. 结对编程,合适的人真的很少,志趣相投的人很少

    自己工作会感到孤独.结对编程是敏捷开发的一个思路.但是,你能找到那个合适的人吗? 1.对问题的理解深度差别不能很大: 2.编程技术.水平趋同: 3.可以良好的沟通交流: 4.生活习性趋同,因为人都有个 ...

  7. Redis很牛逼很秀!轻松实现实时订阅推送

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smiling doesn't always mean you're hap ...

  8. 求求你别再写上千行的类了,试试这些牛逼的重构技巧吧

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/6844904038383747086 答应我,别再写上千行的类了好吗 最近在对已有项目进行扩展 ...

  9. sfc 修复 xp rpc服务器,我来告诉大家一些无耻的电脑知识(很牛逼很震撼,怕用的时候找不到...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 mangement 简单 网络管理协议 snmptrap.exe > utility used with snmp snmp工具 sol.ex ...

最新文章

  1. android 图片横竖判断_Android横竖屏切换及其对应布局加载问题详解
  2. xvid 详解 代码分析 编译等
  3. 关于服务网关的几个问题
  4. Amesim学习——气体混合室仿真
  5. 可能是求质数最高效的算法
  6. RAdam和LookAhead合二为一
  7. 《工业控制系统信息安全防护指南》实施建议(下)
  8. keil uvision5 软件安装图文教程及视频演示
  9. 来啊,一起来智障啊:国外大火游戏人类一败涂地究竟有多好玩?
  10. 魔兽mdx文件导出为Ogre Mesh的小进展
  11. 民锋国际期货:期货交易 | 博弈之道,遵守法则
  12. 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系
  13. Android软件工程师-面试题
  14. HDU2549-壮志难酬
  15. 1.1 生日悖论+1.2快速排序+1.3字符串比较+1.4 随机算法+1.5 定理+1.6 抽样
  16. 加密的PDF文件怎么解除密码
  17. php configure libzip,PHP安装zip拓展,以及libzip安装问题
  18. 支付宝微信合单支付对接说明
  19. 张孝祥java邮件开发_张孝祥java邮件开发详解笔记(生成文本邮件)
  20. 签到功能完成03《ivx低代码签到系统制作》

热门文章

  1. Matlab与线性代数 -- 稀疏矩阵的创建
  2. SIFT 特征检测及匹配
  3. 计算机史最疯狂一幕:豪赌50亿美元,“蓝色巨人”奋身一跃
  4. 写了篇爬虫文章,收到律师函,怎么办
  5. 用 Python 详解《英雄联盟》游戏取胜的重要因素!
  6. 奖金+招聘绿色通道,这一届算法大赛关注下?
  7. 李理:为什么说人工智能可以实现?
  8. 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级
  9. 接口优化:Redis预减库存,减少对数据库访问方案
  10. 限量!Alibaba首发“Java成长笔记”,差距不止一点点