![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
排序算法qwq
Ice_teapoy
emmmmmmm,退役OIer...萌新ACMer...不定时更新...
展开
-
排序-对比分析
1 冒泡排序1.1 流程从第1个元素至第n-1个元素,每个元素与其下一个元素进行比较。如果当前元素比下一个元素大,就交换他们两个。1过程结束后,数组中最后一个元素将会是所有数字中最大的数字,它处于合适的位置。重复若干次1过程,我们就能找到数组中第2大的元素、第3大的元素、第4大的元素……直至找到第n-1大的元素。数组变为有序数组。1.2 演示编号a[]操作0.第一轮9 3 5 4 1比较第1和第2个元素,不交换。1.第一轮3 9 5 4 1比较第2原创 2021-01-14 20:14:14 · 309 阅读 · 0 评论 -
排序-猴子排序
无限猴子定理最早是由埃米尔·博雷尔在1909年出版的一本谈概率的书籍中提到的,此书中介绍了“打字的猴子”的概念。无限猴子定理是概率论中的柯尔莫哥洛夫的零一律的其中一个命题的例子。大概意思是,如果让一只猴子在打字机上随机地进行按键,如果一直不停的这样按下去,只要时间达到无穷时,这只猴子就几乎必然可以打出任何给定的文字,甚至是莎士比亚的全套著作也可以打出来。猴子排序是基于无限猴子定理形成的算法(x流程随机生成待排序列的一个排列,检测该排列是否是递增序列。重复此过程,直至完成排序。时间复杂度分析平原创 2021-08-19 20:49:29 · 1664 阅读 · 0 评论 -
排序-基数排序
#include <stdio.h>#include <math.h>#include <string.h> #define N 1000001int n,a[N],maxx,len,b[10],t[10],nxt[N],y[N],tot;int main(){ scanf("%d",&n); for (int i=1;i<=n;++i) if (scanf("%d",&a[i]),a[i]>maxx) maxx=a[i];原创 2021-01-14 20:20:58 · 107 阅读 · 0 评论 -
排序-希尔排序
#include <stdio.h>#define N 100001int n,a[N];int main(){ scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&a[i]); for (int t=n/3+1;t!=1;t=t/3+1) { for (int i=t+1,j;i<=n;++i) { int x=a[i]; for (j=i-t;j>=1;j-=t)原创 2021-01-13 18:29:59 · 138 阅读 · 0 评论 -
排序-插入排序
#include <stdio.h>#define N 1001int n,a[N],x;int main(){ scanf("%d",&n); for (int j,i=1;i<=n;++i) { scanf("%d",&x); for (j=i-1;j>=1;j--) if (x<a[j]) a[j+1]=a[j]; else break; a[j+1]=x; } for (int i=1;i<=n;++i)原创 2021-01-13 13:37:48 · 96 阅读 · 0 评论 -
排序-桶排序
#include <stdio.h>#define N 1000001int n,a[N]={0},x;int main(){ scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&x),a[x]++; for (int i=0;i<N;++i) for (int j=1;j<=a[i];++j) printf("%d ",i); return 0; }原创 2021-01-13 18:29:02 · 110 阅读 · 0 评论 -
排序-归并排序
#include <stdio.h>#define N 1001int n,a[N],x,b[N];void paixu(int l,int r){ if (l==r) return; int mid=(l+r)/2+1,i,j,t=0; paixu(l,mid-1); paixu(mid,r); for (i=l,j=mid;i<mid&&j<=r;) if (a[i]<a[j]) b[++t]=a[i++]; else b[++t]原创 2021-01-14 20:19:05 · 238 阅读 · 2 评论 -
排序-冒泡排序
输入n个数,排序后输出。#include <stdio.h>#define N 101int n,a[N],t;int main(){ scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&a[i]); for (int i=n;i>1;--i) //每一轮将a[]中第i大的元素放在合理位置上 for (int j=1;j<i;++j) // 每个元素与其下一个元素进行比较。如果当前元素比下原创 2021-01-13 13:18:18 · 225 阅读 · 0 评论 -
排序-快速排序
#include <stdio.h>#define N 100001int n,a[N];void paixu(int l,int r){ if (l>=r) return; int i,j; for (i=l,j=r;i<j;) { while (i<j&&a[j]>a[l]) j--; if (i>=j) break; while (i<j&&a[i]<=a[l]) i++; if (i原创 2021-01-14 20:21:54 · 151 阅读 · 0 评论 -
排序-选择排序
#include <stdio.h>#define N 1001int n,a[N];int main(){ scanf("%d",&n); for (int i=1;i<=n;++i) scanf("%d",&a[i]); for (int i=n;i>1;i--) { int t,maxi=1; for (int j=2;j<=i;++j) if (a[maxi]<a[j]) maxi=j; t=a[maxi],a[原创 2021-01-14 20:17:34 · 109 阅读 · 0 评论