原文

索引

  1. 猴子排序

  2. 钻石排序(戴蒙德排序)

  3. 恶魔排序

  4. 珠排序

  5. 地精排序(怂货排序)

  6. 智能设计排序


1. 猴子排序

(提供者cy1306110516)

猴子排序的思想源自于著名的无限猴子定理。

既然猴子们能敲出《哈姆雷特》,区区排序又算什么呢?

思路:

  1. 判断数组是否有序,如果无序,进入下一步。

  2. 随机打乱数组,回到上一步。

适用人群:

欧皇

时间复杂度:

  • 最坏情况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)

钻石排序(又名戴蒙德排序)的思想源自于演化生物学家贾雷德·戴蒙德的作品《枪炮、病菌与钢铁》。

思路:

  1. 对于数组中的每一项,创造一个等同人数的人类部落。

  2. 让他们独立地发展。

  3. 第一个发展出枪支的最大,以此类推。

适用人群:

极远未来的统治阶层

时间复杂度:

O(n),常数为13000年。

代码实现:

暂无


3.恶魔排序

(提供者DARTH_VADER)

恶魔排序的思想源自于十九世纪英国物理学家詹姆斯·克拉克·麦克斯韦的麦克斯韦恶魔假说。

思路:

创造这样的一种气体:其每一个分子运动速度与数组中的每一个数成比例。

将这样的气体灌入一个密封的盒子,该盒子被一分为二,中间有一个小孔接通两侧。

小孔一次只能经过一个分子。

每一次迅速打开小孔,让特定分子经过。

那么长时间后,盒子将一侧热一侧冷。

对于每一侧,分治进行本算法。

适用人群:

麦克斯韦的恶魔

时间复杂的:

O(n!)

代码实现:

暂无


4. 珠排序

(提供者502_Bad_Gateaway)

珠排序的思想源自于中国历史悠久的算盘。(大雾)

思路:

  1. 对于每一个数字,我们用一排珠子表示。

  2. 将这些珠子叠在一起,使其自然下落。

  3. 每一层的珠子数量即为该位置数值。

适用人群:

喜好珠算的OIer

时间复杂度:

这个。。。呃呃呃看你怎么说了

代码实现:

等一下哈,本人正在敲


5. 怂货地精排序

(提供者502_Bad_Gateaway)

怂货排序。。。很怂。

思路:

  1. 当i=0或a[i]>a[i-1]时,i++。

  2. 否则交换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

一堆乱七八糟绝不正经的排序算法相关推荐

  1. 排序算法系列之(一)——选择排序清新脱俗的一面

    · 前言 大家还记得我几个月前挖的一个大坑吗?非要自不量力的来讲讲排序家族的故事,这不是!今天我回来继续填这个坑,搞不好会把自己埋在这了/(ㄒoㄒ)/~~ 话说关于这些排序算法的总结网上各种版本的都有 ...

  2. 这或许是东半球分析十大排序算法最好的一篇文章

    作者 | 不该相遇在秋天 转载自五分钟学算法(ID:CXYxiaowu) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强 ...

  3. 常见排序算法复杂度总结

    常用口诀 不稳定排序算法: 快.选.希.堆 初始数据元素排列顺序与比较次数无关的排序算法: 一堆(堆排序)海归(归并排序)选(选择排序)基友

  4. 排序算法之计数排序、基数排序和桶排序

    转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...

  5. 买什么数据结构与算法,这里有:动态图解十大经典排序算法(含JAVA代码实现)

    上篇的动图数据结构反响不错,这次来个动图排序算法大全.数据结构与算法,齐了. 几张动态图捋清Java常用数据结构及其设计原理 本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法: ...

  6. 「干货总结」程序员必知必会的十大排序算法

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 绪论 身 ...

  7. 「归纳|总结」程序员必知必会的十大排序算法

    微信搜一搜「bigsai」关注这个有趣的程序员 新人原创公众号,求支持一下!你的点赞三连肯定对我至关重要! 文章已收录在 我的Github bigsai-algorithm 欢迎star 本文目录 绪 ...

  8. 排序算法时间复杂度、空间复杂度、稳定性整理

    涉及排序算法包括:简单选择排序.直接插入排序.希尔排序.归并排序.冒泡排序.快速排序.堆排序.基数排序 时间复杂度:快些以nlogn的速度归队 此句表示时间复杂度为O(nlogn)的排序," ...

  9. C++ 十大经典排序算法原理及模板之STL方法实现以及稳定性分析

    写在前面: 1.本文中默认排序为升序,降序的原理类似. 2.如果程序直接复制到vs出现无法识别标记的问题,解决方法在这:vs无法识别标记的解决方法 3.本文的算法都是自己用stl实现的,疏漏之处还请指 ...

最新文章

  1. RTP timestamp与帧率及时钟频率的关系
  2. 深入思考:算法工程师的落地能力具体指什么,如何提升自己的落地能力?
  3. c语言 静态变量 初始化,c – 静态变量初始化两次
  4. windows理论基础(一)
  5. 华为 “OSPF” 单区域配置
  6. java复习即基础知识点 思维导图
  7. 最强面试题整理第三弹:Python 后台开发面试题(附答案)
  8. 【保姆级入门系列】阿ken教你学 Python(五) ——函数
  9. 系统架构设计师与系统分析师历年实体分析与解答下载_【系统分析师】07-系统设计...
  10. 零基础如何从零开始运营微信公众号
  11. eval()与train()(结合源码理解)
  12. 2013年10月22日、|充实自己|看书看到恶心看教学视频看到吐|也许旷几次课也是值得的
  13. 如何实现一款好用的云图(word-cloud)生成工具?
  14. linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件
  15. ArcEngine下纵断面图的绘制
  16. iOS Zip文件压缩
  17. BoT-SORT: Robust Associations Multi-Pedestrian Tracking 论文详细解读
  18. 水题Eating Soup
  19. (转)写给找工作的朋友们
  20. c语言c11标准侯捷,C语言的C89、C99和C11标准(上)

热门文章

  1. Ubuntu上Vim安装NERDTree插件操作步骤
  2. Linux下getopt_long函数的使用
  3. 【Ubuntu】解决ubuntu系统root用户下Chrome无法启动问题
  4. pandas 设置多重索引_Pandas多重索引使用详解
  5. java object finalize_Java Object finalize() 方法
  6. ios超级签名_ios超级签名何以固若金汤?原因在这里
  7. python3.7版本_Centos7升级Python3.7.3版本
  8. 白噪音和粉红噪音煲机_白噪音真的有助于睡眠?这款可以自定义的应用给你答案...
  9. linux的veth导致网络不通,linux的veth对网桥通信实验
  10. python文本编码转换_Python: 转换文本编码