猴子捞月排序算法 (随机排序)
RT大佬教的排序算法
平均复杂度O(n!) ;
n=13 基本已经慢到不行了 ,n再大估计几万年才能出来;
核心代码:do { … } while(next_permutation(k,k+n));
#include <bits/stdc++.h>#define ull unsigned long long
#define ll long longusing namespace std;const int maxn=100050;
int k[maxn];
bool vis[maxn];void houzilaosort(int n) {bool flag=0;while(!flag) {do {bool f2=0;for(int i=0;i<n-1;i++) {if(k[i]>k[i+1]) {f2=1;break;}}if(!f2) {flag=1;break;}}while(next_permutation(k,k+n));}
}void init(int n) {for(int i=0;i<n;i++) {k[i]=rand()%900+100;}
}void printnum(int n) {for(int i=0;i<n;i++) {cout<<k[i]<<" ";}cout<<endl;
}int main() {ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);srand((unsigned)time(NULL));int n;cin>>n;init(n);cout<<"Initial: "<<endl;for(int i=0;i<n;i++) {cout<<k[i]<<" ";}cout<<endl;houzilaosort(n);cout<<"After sort: "<<endl;printnum(n);return 0;
}
猴子捞月排序算法 (随机排序)相关推荐
- Java排序 - 不实用的几个排序算法 -- 睡眠排序、猴子排序、面条排序、珠排序...
介绍几个不实用的排序算法,一来可以在学习时增加一些乐趣,放松一下自己,二来可以学习一下.思考一下这些算法失败在哪里,又是否存在一些好的地方? 睡眠排序 这是一个思想比较简单,脑洞巨大的算法 -- 我们 ...
- 排序算法猴子排序java算法代码实现
<h1>猴子排序</h1> 原理:现有一组未排序数据和相同数量的方格,然后依次随机地取出数据随机地放入方格中,直到把方格放满即止. 之所以又被称为猴子排序,我的猜测是因为.将这 ...
- 排序算法---选择排序(java版)
简单选择排序 原理 选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间.但是选择排序每次会从排序区间中找到最小的元素,将其放到已排序区间的末尾. 简单选择排序执 ...
- JavaScript实现十种经典排序算法(js排序算法)
冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一 ...
- C语言基础排序算法-选择排序
C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...
- C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序
常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...
- 经典排序算法 - 鸡尾酒排序Cocktail sort
经典排序算法 - 鸡尾酒排序Cocktail sort 鸡尾酒排序基于冒泡排序,双向循环 还是看例子吧,给定待排数组[2 3 4 5 1] 第一趟过去时的每一步 第一步迭代,2 < 3不换 [2 ...
- 经典排序算法 - 希尔排序Shell sort
经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...
- 经典排序算法 - 耐心排序Patience Sorting
经典排序算法 - 耐心排序Patience Sorting 这个排序的关键在建桶和入桶规则上 建桶规则:如果没有桶,新建一个桶;如果不符合入桶规则那么新建一个桶 入桶规则:只要比桶里最上边的数字小即可 ...
- Java排序算法——选择排序
Java排序算法--选择排序(Selection sort) 传送门 冒泡排序 插入排序 简述 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找 ...
最新文章
- python基础===Python 代码优化常见技巧
- 使用shouldComponentUpdate进行性能优化
- (2)双机调试+符号文件
- HTML设计显示表单
- 详解DPoS共识算法
- 第三次学JAVA再学不好就吃翔(part92)--Map集合的遍历
- JAVA面试常考系列六
- java在cmd中什么意思_为什么在cmd中java可以运行,javac不行?
- 7-93 矩阵A乘以B (15 分)
- Leecode刷题热题HOT100(6)——Z 字形变换
- 【转载】 MySQL之用户资源限制
- FPGA 实现 RGB 图像转 Gray
- php系统变量有哪些,php预定义系统变量
- 欧姆龙OMRON PLC之Host Link协议(一)
- C语言基础之14:结构和其他数据形式
- Error:间接寻址级别不同——C++真的魔鬼
- 最全面java中的static关键字剖析
- 计算机一级真题word,最新完整word版全国计算机等级考试一级操作题往年考试真题.docx...
- 什么是zkSNARKs:谜一般的“月亮数学”加密,Part-1
- 脱离AS在windows下使用CMake交叉编译for Android