世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
来自公众号:五分钟学算法
今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。
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核心代码,来看一下效果。
各位技术大神还知道哪些案例,欢迎留言补充:)
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?相关推荐
- python代码少的作品_世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?...
快速傅里叶变换(FFT),核心算法用递归法几十行搞定. 计算机应用最为重要的算法之一,广泛应用于各种各样的工业和科学实践中.第一次看到递归算出快速傅里叶的时候,惊了很久.后来经过数学家的很多努力,有了 ...
- [转载]判断IE浏览器-世界上最短的代码
最短的IE判定var ie=!-[1,]分析 以前最短的IE判定借助于IE不支持垂直制表符的特性搞出来的. var ie = !+"\v1";仅仅需要7bytes!参见这篇文章,& ...
- 8个很少用,但却很好用的 Python 库
本文介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,可能会非常有帮助的 Python 库 为了配合上述 Python 库的使用,我们先从 Kaggle 上下载一个数据 -- Animal ...
- 8个很少用,但却很好用的 Python 库,一起来看看吧
大家好,我是辰哥 今天介绍一些我们可能很少听过,但是对于特定问题或者特定任务来说,可能会非常有帮助的 Python 库 为了配合上述 Python 库的使用,我们先从 Kaggle 上下载一个数据 - ...
- 萌新初学java,自己写的剧本,求大佬帮忙纠正下语法上的错误,能让内容更完善些代码量更少些
public static void main(String[] args) { Scanner shuxing = new Scanner(System.in);//默认:龙王杀手路明非 Syste ...
- 结对编程,合适的人真的很少,志趣相投的人很少
自己工作会感到孤独.结对编程是敏捷开发的一个思路.但是,你能找到那个合适的人吗? 1.对问题的理解深度差别不能很大: 2.编程技术.水平趋同: 3.可以良好的沟通交流: 4.生活习性趋同,因为人都有个 ...
- Redis很牛逼很秀!轻松实现实时订阅推送
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Smiling doesn't always mean you're hap ...
- 求求你别再写上千行的类了,试试这些牛逼的重构技巧吧
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:juejin.cn/post/6844904038383747086 答应我,别再写上千行的类了好吗 最近在对已有项目进行扩展 ...
- sfc 修复 xp rpc服务器,我来告诉大家一些无耻的电脑知识(很牛逼很震撼,怕用的时候找不到...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 mangement 简单 网络管理协议 snmptrap.exe > utility used with snmp snmp工具 sol.ex ...
最新文章
- android 图片横竖判断_Android横竖屏切换及其对应布局加载问题详解
- xvid 详解 代码分析 编译等
- 关于服务网关的几个问题
- Amesim学习——气体混合室仿真
- 可能是求质数最高效的算法
- RAdam和LookAhead合二为一
- 《工业控制系统信息安全防护指南》实施建议(下)
- keil uvision5 软件安装图文教程及视频演示
- 来啊,一起来智障啊:国外大火游戏人类一败涂地究竟有多好玩?
- 魔兽mdx文件导出为Ogre Mesh的小进展
- 民锋国际期货:期货交易 | 博弈之道,遵守法则
- 索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系
- Android软件工程师-面试题
- HDU2549-壮志难酬
- 1.1 生日悖论+1.2快速排序+1.3字符串比较+1.4 随机算法+1.5 定理+1.6 抽样
- 加密的PDF文件怎么解除密码
- php configure libzip,PHP安装zip拓展,以及libzip安装问题
- 支付宝微信合单支付对接说明
- 张孝祥java邮件开发_张孝祥java邮件开发详解笔记(生成文本邮件)
- 签到功能完成03《ivx低代码签到系统制作》
热门文章
- Matlab与线性代数 -- 稀疏矩阵的创建
- SIFT 特征检测及匹配
- 计算机史最疯狂一幕:豪赌50亿美元,“蓝色巨人”奋身一跃
- 写了篇爬虫文章,收到律师函,怎么办
- 用 Python 详解《英雄联盟》游戏取胜的重要因素!
- 奖金+招聘绿色通道,这一届算法大赛关注下?
- 李理:为什么说人工智能可以实现?
- 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级
- 接口优化:Redis预减库存,减少对数据库访问方案
- 限量!Alibaba首发“Java成长笔记”,差距不止一点点