![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序
ww
WAWA战士
起飞
展开
-
堆排序时间复杂度
堆排序算法调整的时间复杂度 建堆的时间复杂度原创 2021-12-24 22:30:50 · 179 阅读 · 0 评论 -
时间复杂度
最好时间复杂度:当前数组满足该算法的某些需求时,所能达到的最优,之前我以为是一个排好序的数组用该算法所需要的时间 比如 快速排序 的最好时间复杂度 即每次partition都能选取到一个刚好在中间的base,这样数组就会不断被分成两段,类似于二分法,最终时间复杂度为nlogn 最坏时间复杂度 继续以快排为例,如果每一次的base都选到最小的,则相当于没有左分支,只剩下一个贼大的右分支,长度为n-1,经过递归计算,时间复杂度为n² 平均时间复杂度 以快排为例,比较麻烦,我总结一下就是每种划分方法占同样概率原创 2021-12-21 15:15:31 · 189 阅读 · 0 评论 -
hdu3342(拓扑排序,注意判重)
#include<iostream> #include<cstring> using namespace std; int main(){ int m,r; cin>>m>>r; while(m){ int relation[m][m]; int in[m]; memset(relation,0,sizeof(relation)); memset(in,0,sizeof(i原创 2020-10-13 23:27:17 · 97 阅读 · 0 评论 -
8645 归并排序(非递归算法)
先参考 #include <iostream> using namespace std; void merge(int *a,int start,int mid,int last)//每一个跨度span的左右数组合并 { int l=start;//看成原本归并排序中的左数组的最左边的下标 int r=mid+1;//看成原本归并排序中的右数组的最左边的下标 int b[last-start+1],j=0; while(l<=mid&&r&原创 2020-05-25 22:15:44 · 1524 阅读 · 0 评论 -
8644 堆排序
思路: 堆排序利用大根堆的特性,即根节点为最大值,每一次将根节点移到数组后面,相当于每一次都在把大的值往后放,同时我们所需要考虑的范围也在不断减小,相当于分别在0 ~ last ,0 ~ last-1 , 0 ~ last-2,…0~1中找最大值 #include<iostream> #include<algorithm> #include<cstdio> using namespace std; //n是总结点数,x是当前需要堆化的结点 void s原创 2020-05-22 11:13:31 · 560 阅读 · 0 评论 -
计数排序
先看这个 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int p[200],q[200]; int main() { int n,t,sum=0,maxx=0,minn=99999; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&p[i]); ma原创 2020-05-19 20:32:02 · 76 阅读 · 0 评论 -
18721 快速排序
思路: 定义一个基准值(以他为标准进行比较),将其拿出来,然后把所有比他大的都放在他右侧,小的放左侧,下图关键点+1是有原因的, 你想,我们平时快排肯定high,那么这里最终也一定要实现成high的,不然就越界, 因此我们可以联想到do…while语句,即先减掉1再说,这就实现到high了 #include <stdio.h> #include <stdlib.h> int...原创 2020-04-01 22:34:57 · 583 阅读 · 0 评论 -
18107 校赛排名(sort函数)
原题:校赛排名 cmp相当于定义sort函数功能,比如具体化结构体里面每种数据的排序方式,由小到大都是return a<b,反之升序,同时还能在某种数据相同时再次比较别的种类的数据,具体看代码 #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; stru...原创 2020-03-12 20:03:35 · 269 阅读 · 0 评论 -
插入排序
思路 #include<stdio.h> int main() { int j,k,i=0,n,min,t; int a[2000]; scanf("%d",&n); for(i=0;i<=n-1;i++) { scanf("%d",&a[i]); } for(i=0;i<=n-1;i++) { t=a...原创 2020-02-23 14:40:58 · 50 阅读 · 0 评论 -
桶排序
#include<stdio.h> int main() { int j,k,i=0,n,min,t; int a[11];//参与排序的数字的范围是0~1 scanf("%d",&n); for(i=0;i<=10;i++)//初始化 { a[i]=0; } for(i=0;i<=n-1;i++) { sca...原创 2020-02-23 14:25:23 · 57 阅读 · 0 评论 -
选择排序
思路 模板: #include<stdio.h> int main() { int j,k,i=0,n,min,t; int a[200]; scanf("%d",&n); for(i=0;i<=n-1;i++) { scanf("%d",&a[i]); } for(i=0;i<=n-2;i++) { ...原创 2020-02-23 13:24:16 · 58 阅读 · 0 评论 -
快速排序
洛谷模板题 该题题解洛谷原创作者:沧海之耀 本文仅以本人的理解对其代码进行分析 代码已转换成c语言 #include<stdio.h> void swap(int *a,int *b) { int t,j,k; t=*a; *a=*b; *b=t; } int n,a[100001]; void qsort(int l,int r)//应用二分思想 { ...原创 2020-02-05 16:35:14 · 71 阅读 · 0 评论