一堆乱七八糟绝不正经的排序算法
原文
索引
猴子排序
钻石排序(戴蒙德排序)
恶魔排序
珠排序
地精排序(怂货排序)
智能设计排序
1. 猴子排序
(提供者cy1306110516)
猴子排序的思想源自于著名的无限猴子定理。
既然猴子们能敲出《哈姆雷特》,区区排序又算什么呢?
思路:
判断数组是否有序,如果无序,进入下一步。
随机打乱数组,回到上一步。
适用人群:
欧皇
时间复杂度:
最坏情况O(∞)
最好情况O(n)
算法实现:
1 #include <bits/stdc++.h> 2 using namespace std; 3 int n,a[100005]; 4 inline void random_(){ 5 for (int i=1;i<=n;i++) swap(a[i],a[i+rand()%(n-i+1)]); 6 //打乱,AC全靠RP 7 } 8 inline bool check(){ 9 for (int i=2;i<=n;i++) if (a[i]<a[i-1]) return false; 10 return true; 11 //判断是否有序 12 } 13 inline void bogo_sort(){ 14 while (!check()) 15 random_(); 16 //核心代码 17 } 18 int main(){ 19 scanf("%d",&n); 20 srand(time(NULL)); 21 for (int i=1;i<=n;i++) scanf("%d",&a[i]); 22 bogo_sort(); 23 for (int i=1;i<=n;i++) printf("%d ",a[i]); 24 return 0; 25 }//提供者cy1306110516
2. 钻石排序
(提供者DARTH_VADER)
钻石排序(又名戴蒙德排序)的思想源自于演化生物学家贾雷德·戴蒙德的作品《枪炮、病菌与钢铁》。
思路:
对于数组中的每一项,创造一个等同人数的人类部落。
让他们独立地发展。
第一个发展出枪支的最大,以此类推。
适用人群:
极远未来的统治阶层
时间复杂度:
O(n),常数为13000年。
代码实现:
暂无
3.恶魔排序
(提供者DARTH_VADER)
恶魔排序的思想源自于十九世纪英国物理学家詹姆斯·克拉克·麦克斯韦的麦克斯韦恶魔假说。
思路:
创造这样的一种气体:其每一个分子运动速度与数组中的每一个数成比例。
将这样的气体灌入一个密封的盒子,该盒子被一分为二,中间有一个小孔接通两侧。
小孔一次只能经过一个分子。
每一次迅速打开小孔,让特定分子经过。
那么长时间后,盒子将一侧热一侧冷。
对于每一侧,分治进行本算法。
适用人群:
麦克斯韦的恶魔
时间复杂的:
O(n!)
代码实现:
暂无
4. 珠排序
(提供者502_Bad_Gateaway)
珠排序的思想源自于中国历史悠久的算盘。(大雾)
思路:
对于每一个数字,我们用一排珠子表示。
将这些珠子叠在一起,使其自然下落。
每一层的珠子数量即为该位置数值。
适用人群:
喜好珠算的OIer
时间复杂度:
这个。。。呃呃呃看你怎么说了
代码实现:
等一下哈,本人正在敲
5. 怂货地精排序
(提供者502_Bad_Gateaway)
怂货排序。。。很怂。
思路:
当i=0或a[i]>a[i-1]时,i++。
否则交换a[i]与a[i-1],i--。
适用人群:
正常人类
时间复杂度:
$O(n^2)$
代码实现:
1 void gnome_sort(int unsorted[]){ 2 int i = 0; 3 while (i < unsorted.Length){ 4 if (i == 0 || unsorted[i - 1] <= unsorted[i])i++; 5 else{ 6 int tmp = unsorted[i]; 7 unsorted[i] = unsorted[i - 1]; 8 unsorted[i - 1] = tmp; 9 i--; 10 } 11 } 12 }//提供者DARTH_VADER
6. 智能设计排序
(提供者DARTH_VADER)
智能设计排序的思想源自于智能设计论(智设论)。
思路:
假设我们有一些数字(它们组成了给出的数组),那么它们恰好排序成给出的数组的概率是 $\frac {1}{n!}$
面对如此小的可能性,我们断言这样的数组是随机出现的,未免太过果断。
有理由相信,这样的一个数组是一个有自我意志的排序者给出的。
由于我们对排序的认知被局限在递增或递减,揣摩排序者用意的行为是不理智的。
因此大可放心:数组已被排序!
适用人群:
懒人
时间复杂度:
O(0),当然算上输入就是O(n)
代码实现:
1 #define donothing return 2 void intelligentDesignSort(int list[]){ 3 donothing; 4 }//提供者DARTH_VADER 5
转载于:https://www.cnblogs.com/bztMinamoto/p/9392571.html
一堆乱七八糟绝不正经的排序算法相关推荐
- 排序算法系列之(一)——选择排序清新脱俗的一面
· 前言 大家还记得我几个月前挖的一个大坑吗?非要自不量力的来讲讲排序家族的故事,这不是!今天我回来继续填这个坑,搞不好会把自己埋在这了/(ㄒoㄒ)/~~ 话说关于这些排序算法的总结网上各种版本的都有 ...
- 这或许是东半球分析十大排序算法最好的一篇文章
作者 | 不该相遇在秋天 转载自五分钟学算法(ID:CXYxiaowu) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强 ...
- 常见排序算法复杂度总结
常用口诀 不稳定排序算法: 快.选.希.堆 初始数据元素排列顺序与比较次数无关的排序算法: 一堆(堆排序)海归(归并排序)选(选择排序)基友
- 排序算法之计数排序、基数排序和桶排序
转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...
- 买什么数据结构与算法,这里有:动态图解十大经典排序算法(含JAVA代码实现)
上篇的动图数据结构反响不错,这次来个动图排序算法大全.数据结构与算法,齐了. 几张动态图捋清Java常用数据结构及其设计原理 本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法: ...
- 「干货总结」程序员必知必会的十大排序算法
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...
- 「归纳|总结」程序员必知必会的十大排序算法
微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...
- 排序算法时间复杂度、空间复杂度、稳定性整理
涉及排序算法包括:简单选择排序.直接插入排序.希尔排序.归并排序.冒泡排序.快速排序.堆排序.基数排序 时间复杂度:快些以nlogn的速度归队 此句表示时间复杂度为O(nlogn)的排序," ...
- C++ 十大经典排序算法原理及模板之STL方法实现以及稳定性分析
写在前面: 1.本文中默认排序为升序,降序的原理类似. 2.如果程序直接复制到vs出现无法识别标记的问题,解决方法在这:vs无法识别标记的解决方法 3.本文的算法都是自己用stl实现的,疏漏之处还请指 ...
最新文章
- RTP timestamp与帧率及时钟频率的关系
- 深入思考:算法工程师的落地能力具体指什么,如何提升自己的落地能力?
- c语言 静态变量 初始化,c – 静态变量初始化两次
- windows理论基础(一)
- 华为 “OSPF” 单区域配置
- java复习即基础知识点 思维导图
- 最强面试题整理第三弹:Python 后台开发面试题(附答案)
- 【保姆级入门系列】阿ken教你学 Python(五) ——函数
- 系统架构设计师与系统分析师历年实体分析与解答下载_【系统分析师】07-系统设计...
- 零基础如何从零开始运营微信公众号
- eval()与train()(结合源码理解)
- 2013年10月22日、|充实自己|看书看到恶心看教学视频看到吐|也许旷几次课也是值得的
- 如何实现一款好用的云图(word-cloud)生成工具?
- linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件
- ArcEngine下纵断面图的绘制
- iOS Zip文件压缩
- BoT-SORT: Robust Associations Multi-Pedestrian Tracking 论文详细解读
- 水题Eating Soup
- (转)写给找工作的朋友们
- c语言c11标准侯捷,C语言的C89、C99和C11标准(上)
热门文章
- Ubuntu上Vim安装NERDTree插件操作步骤
- Linux下getopt_long函数的使用
- 【Ubuntu】解决ubuntu系统root用户下Chrome无法启动问题
- pandas 设置多重索引_Pandas多重索引使用详解
- java object finalize_Java Object finalize() 方法
- ios超级签名_ios超级签名何以固若金汤?原因在这里
- python3.7版本_Centos7升级Python3.7.3版本
- 白噪音和粉红噪音煲机_白噪音真的有助于睡眠?这款可以自定义的应用给你答案...
- linux的veth导致网络不通,linux的veth对网桥通信实验
- python文本编码转换_Python: 转换文本编码