当前位置: 首页 > 编程日记 > 正文

一堆乱七八糟绝不正经的排序算法

原文

索引

  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

相关文章:

好久没有更新了!

好久没有更新博客了&#xff0c;主要是因为本人在从事信息化监理行业&#xff0c;遇到了困惑的事情&#xff0c;不时地在问自己&#xff0c;选择这个行业&#xff0c;对吗&#xff1f; 从事这个行业&#xff0c;已经换了两家公司&#xff0c;对于信息化监理事业却秉承不同的理念…

多人开发情况下的字符串本地化

项目开发中&#xff0c;独立开发的还是少数。经常会有多人开发的情况&#xff0c;这种情况&#xff0c;如果多人同时操作本地化文件&#xff0c;极有可能会存在冲突。另一方面&#xff0c;我们又不希望自己的本地化文件受到对方的污染&#xff0c;也就是说&#xff0c;我们不希…

【Ubuntu】制作usb启动盘安装ubuntu18.04时报错:“failed to load ldlinux.c32”

1、问题描述 使用UltraISO制作ubuntu18.04操作系统的usb启动盘后&#xff0c;按照时报错&#xff1a; failed to load ldlinux.c32ubuntu16.04、ubuntu14.04没有遇到这个问题。 2、原因 未知 3、解决方法 参考博客 https://blog.csdn.net/tnaig/article/details/81139887…

清华AI学堂班:姚期智担任首席教授,2019年首批招收30人

整理 | 琥珀出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;清华流传一句话&#xff0c;半国英才聚清华&#xff0c;而清华一半英才在“姚班”。据不完全统计&#xff0c;自 2005 年开班至今&#xff0c;“姚班”已有10位毕业生进入学界执教斯坦福大学、普…

php函数get_magic_quotes_gpc详解

2019独角兽企业重金招聘Python工程师标准>>> set_magic_quotes_runtime是用来设置PHP 环境配置的变量 magic_quotes_runtime 值。 0-关闭 1-打开 程序中检测状态用get_magic_quotes_runtime,返回 0 表示关闭本功能&#xff1b;返回 1 表示本功能打开。若magic_quote…

掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程

作者 | Himanshu Rawlani译者 | Monanfei&#xff0c;责编 | 琥珀出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;2019 年 3 月 6 日&#xff0c;谷歌在 TensorFlow 开发者年度峰会上发布了最新版的 TensorFlow 框架 TensorFlow2.0 。新版本对 TensorFlow…

【Qt】Qt再学习(十四):QGraphicsView

1、简介 QGraphicsView提供显示QGraphicsScene的功能,它继承自QAbstractScrollArea,因此它还是一个带滚动条的窗口,这样可以实现只场景的一部分。还可以创建多个QGraphicsView来显示同一个QGraphicsScene,类似 QTableView、QTreeView和QListView的显示,官方专业的描述是“…

6月27日任务 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

2019独角兽企业重金招聘Python工程师标准>>> 16.4 配置Tomcat监听80端口 1. vim /usr/local/tomcat/conf/server.xml Connector port"8080" protocol"HTTP/1.1" 修改为Connector port"80" protocol"HTTP/1.1" 2. /usr/loca…

Excel导入SQL数据库完整代码

protected void studentload_Click(object sender, EventArgs e){//批量添加学生信息SqlConnection conn DB.dataBaseConn();//链接数据库conn.Open();try{string fileurl typename(studentFileUpload);//调用typename方法取得excel文件路径DataSet ds new DataSet();//取得…

33关Python游戏,测试你的爬虫能力到底及格不?

作者 | 苏克1900责编 | 胡巍巍转载自高级农民工&#xff08;ID: Mocun6&#xff09;最近在网上看到一个非常有意思的 Python 游戏通关网站&#xff0c;一共有 33 关&#xff0c;每一关都需要利用 Python 知识解题找到答案&#xff0c;然后进入下一关。很考验对 Python 的综合掌…

【Qt】Qt再学习(十五):关于paintEvent、QPainter学习这一个demo就够了

1、描述 关于绘画事件paintEvent和绘制类QPainter的使用,推荐参考QtCreator中自带的示例basicdrawing。通过这个例子就能掌握QPainter的所有基本用法。下面是这个例子的几张截图:

HTTP缓存——304与200 from cache

个人博客原文地址 HTTP与缓存相关的字段 1. 通用字段 字段名称释义Cache-Control控制缓存具体的行为PragmaHTTP1.0时的遗留字段&#xff0c;当值为"no-cache"时强制验证缓存Date创建报文的日期时间(启发式缓存阶段所用)2. response字段 字段名称释义ETag服务器生成资…

一个多年网络工程师总结的工作实用经验

转载自&#xff1a;51CTO下载频道 1、 交换机选购指南l 设备基本指标&#xff1a;网络接口类型、用户可用插槽数、端口密度。l 设备功能指标&#xff1a;VLAN划分、堆叠、单播和组播协议支持、可网管。l 设备性能指标&#xff1a;背板带宽、包转…

【Qt】Qt再学习(十六):QObject::connect: Cannot queue arguments of type ‘QString‘

1、问题描述 跨线程使用信号和槽时,如果是非const的引用传参,就会报如下的错误: QObject::connect: Cannot queue arguments of type QString& (Make sure QString& is registered using qRegisterMetaType().)2、测试示例 #include <QCoreApplication>

微软提出极低资源下语音合成与识别新方法,小语种不怕没数据!| ICML 2019

作者 | 谭旭转载自微软研究院AI头条&#xff08;ID: MSRAsia&#xff09;编者按&#xff1a;目前&#xff0c;人类使用的语言种类有近7000种&#xff0c;然而由于缺乏足够的语音-文本监督数据&#xff0c;绝大多数语言并没有对应的语音合成与识别功能。为此&#xff0c;微软亚洲…

面试准备--7.31

22222转载于:https://www.cnblogs.com/czlovezmt/p/9398015.html

那些年,让我面试头大的几个排序算法,今天终于搞懂了!

作者 | 逆流的鱼yuiop转载自何俊林&#xff08;ID:smartyuge&#xff09;算法上&#xff0c;最基础的就是排序算法&#xff0c;几乎在面试中&#xff0c;或多或少会要求你手写一些基础算法。今天鱼哥带大家这些基础算法回顾下。快速排序介绍&#xff1a;快速排序&#xff08;Qu…

【天线】天线基础:名词解释

1、定向天线和全向天线 先上图&#xff0c;第一张图是定向天线&#xff08;一根棍子加一块板&#xff09;&#xff0c;第二张图是全向天线&#xff08;一根棍子&#xff09; 网上的几种解释&#xff1a; 全向天线就是一个棍子&#xff0c;围绕棍子有一圈儿信号&#xff1b;定…

springBean生命周期----来自spring实战总结

1、Spring对bean进行实例化 2、Spring将值和bean的引用注入到bean对应的属性中(比如说注入到被依赖的bean的方法中或属性里) 3、如果bean实现了BeanNameAware接口,将会将bean的Id传入setBeanName()方法中 4、如果bean实现了BeanFactoryAware接口,将会设置bean的BeanFactory的引…

disk boot failure,insert system disk and press enter

每次一开机就出现提示:"disk boot failure,insert system disk and press enter"http://topic.csdn.net/t/20061202/08/5201096.html 转载于:https://blog.51cto.com/yfb880106/857829

深度讲解:web前端性能优化

一、课程简介&#xff1a; 1、课程大纲 涉及到的分类 网络层面构建层面浏览器渲染层面服务端层面涉及到的功能点 资源的合并与压缩图片编解码原理和类型选择浏览器渲染机制懒加载预加载浏览器存储缓存机制PWAVue-SSR前端性能优化原理 作用及原理如何与真实业务场景结合理论结合…

Google Android向华为“闭源”,华为手机迎来至暗时刻!

作者 | 屠敏转载自CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;居安思危任正非&#xff0c;未雨绸缪如华为。在贸易战的背景下&#xff0c;即使早在多年前已在多个层面做好“备胎”计划的华为&#xff0c;在面对美国对芯片乃至操作系统等系列釜底抽薪的打压时&#xff…

【C++】C++好书推荐

一、吴咏炜推荐 1、入门级 Bjarne Stroustrup, A Tour of C, 2nd ed. Addison-Wesley, 2018 中文版&#xff1a; 王刚译&#xff0c;《C 语言导学》(第二版&#xff09;。机械工业出版社&#xff0c;2019 Bjarne Stroustrup, The C Programming Language, 4th ed. Addison-W…

HDOJ2569 ( 彼岸 ) 【递推公式】

f13f29f321f451猜测f(n)2*f(n-1)f(n-2)在纸上打草稿写出f3的情况&#xff0c;然后推出f4的情况&#xff08;在f3后边加*2或*3就成&#xff09;f3 f4 f3 f4 f3 f4111*3 222*3 333*3112*2 221*2 331*2113*2 223*2 332*2121*2 212*2 313*2131*2 …

【C++】new和malloc的区别

一、显而易见的区别 1、属性 new/delete是C关键字&#xff0c;需要编译器支持&#xff1b; malloc/free是库函数&#xff0c;需要头文件支持。 2、参数 使用new操作符申请内存分配时&#xff0c;无须指定内存块的大小&#xff0c;编译器会根据类型信息自行计算&#xff1b;…

消息队列的面试题7

1、面试题 如果让你写一个消息队列&#xff0c;该如何进行架构设计啊&#xff1f;说一下你的思路 2、面试官心里分析 其实聊到这个问题&#xff0c;一般面试官要考察两块&#xff1a; &#xff08;1&#xff09;你有没有对某一个消息队列做过较为深入的原理的了解&#xff0c;或…

《使女的故事》大火,AI是背后最大推手?

作者 | Just、Rachel出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;还记得大火的美剧《使女的故事》吗&#xff1f;先别着急回答&#xff0c;这次我们不讲剧情&#xff0c;而要说的是这部剧背后的发行方是美国 Hulu 网站。该网站是美国第二大付费在线视频平台&#…

jQuery事件处理一瞥

以前部门一直都是使用一个名为QTT的JS框架。最近老大提出要转用jQuery框架&#xff0c;需要将旧框架的一些JQ没有实现的功能移植到JQ中去。当我移植到event库的时候&#xff0c;以下是其代码&#xff1a; QTT.event {KEYS : {BACKSPACE : 8,TAB : 9,RETURN : 13,ESC : 27,SPAC…

【C++】零散知识

1、抛异常时&#xff0c;还会执行析构操作吗&#xff1f; 发生异常&#xff08;抛异常&#xff09;时&#xff0c;在该作用域中的局部非PAD变量&#xff08;即&#xff0c;有构造函数和析构函数的变量&#xff09;会执行析构操作。 2、new出的内存一定在堆上吗&#xff1f; …

百度景鲲“升职记”

整理 | 琥珀出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;近日&#xff0c;据多家媒体报道&#xff0c;百度人力资源负责人崔珊珊发出晋升邮件宣布&#xff0c;智能生活事业群总经理景鲲晋升为副总裁。百度在晋升邮件中评价他&#xff1a;“敢打硬仗、能…