当前位置: 首页> 娱乐> 影视 > 如何开发自己的软件_杭州网站推广方案平台_微信朋友圈推广软文_重庆seo网络优化师

如何开发自己的软件_杭州网站推广方案平台_微信朋友圈推广软文_重庆seo网络优化师

时间:2025/7/18 3:47:23来源:https://blog.csdn.net/Brilliant_Sky/article/details/145615274 浏览次数:0次
如何开发自己的软件_杭州网站推广方案平台_微信朋友圈推广软文_重庆seo网络优化师

排序算法大合集

翻了翻很久以前写的算法报告,现在整理一下。

由难度从简单到难排序。

桶排序、冒泡排序、选择排序、快速排序。

最简单粗暴——桶排序

(一)桶排序原理

桶排序,是一个目前速度最快的一种排序
基本思想是将无序列数依次装进一个按元素名命名数组中
最后挨个判断每个“桶”中有没有数
有的话将其输出的一种快速排序
优点:速度最快
缺点:只限用于小数据排序,通常会造成巨大的空间损失
适用于小规模且有一定数据范围的数据排序

(二)复杂度分析

时间复杂度:O(n)
空间复杂度:依数据范围而定,一般较大

(三)代码实现

#include<iostream>
#include<cstdio>
using namespace std;
int n;//有n个数要进行排序 
int maxn=-1;//设定一个代表着输入数据最大的变量,初始值设为-1 
int minn=100010; //设定一个代表着输入数据最小的变量,初始值设为100010 
int a[100005];//假设数据大小不超过十万 
int main(){cin>>n;for(int i=1;i<=n;i++){int k;//定义一个临时变量cin>>k;//输入 a[k]++;//桶排序重要的一点,将每个元素都装在相应的桶中 if(minn>k)//打擂台 {minn=k;}if(maxn<k)//打擂台 {maxn=k;}}for(int i=minn;i<=maxn;i++)//从数据的最小至大上限依次判断 {while(a[i]!=0)//如果该桶中还存有数据,就将它输出,并将该桶中元素的数量-1,直至数量为0 {cout<<i<<" ";//输出 a[i]--;//数量-1 }}cout<<endl;//随意换行一下 return 0;
}

(四)模拟过程

假设我们要为15个数进行排列:
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5

输入第一个1时,a[1]从0开始+1,结果为1

a[1]=1

输入第一个2时,a[2]从0开始+1,结果为1

a[2]=1

输入第一个3时,a[3]从0开始+1,结果为1

a[3]=1

输入第一个4时,a[4]从0开始+1,结果为1

a[4]=1

输入第一个5时,a[5]从0开始+1,结果为1

a[5]=1

输入第一个6时,a[6]从0开始+1,结果为1

a[6]=1

输入第一个7时,a[7]从0开始+1,结果为1

a[7]=1

输入第一个8时,a[8]从0开始+1,结果为1

a[8]=1

输入第一个9时,a[9]从0开始+1,结果为1

a[9]=1

输入第一个10时,a[10]从0开始+1,结果为1

a[10]=1

输入第二个1时,a[1]从1开始+1,结果为2

a[1]=2

输入第二个2时,a[2]从1开始+1,结果为2

a[2]=2

输入第二个3时,a[3]从1开始+1,结果为2

a[3]=2

输入第二个4时,a[4]从1开始+1,结果为2

a[4]=2

输入第一个5时,a[5]从1开始+1,结果为2

a[5]=2

最后,按所有存在数据的数组的顺序排序,输出,即可得到一串有序的数据,即:
1 1 2 2 3 3 4 4 5 5 6 7 8 9 10

(五)总结

桶排序基本上是一种“不用动脑筋”的排序,直接将数据存储在数组内,最后输出的一个过程,虽时间复杂度最快,但往往会浪费巨大的空间复杂度,仅仅适用于小规模的数据排序。

有趣的排序——冒泡排序

(一)冒泡排序原理

重复访问未排序的元素序列,依次审查相应两个元素,若顺序错误,则将其交换,最后得到一个已排序的序列
优点:原理简单,易于理解
缺点:效率低
适用于小规模数据排序

(二)复杂度分析

时间复杂度:O(n*n)
空间复杂度:O(1)

(三)代码实现

#include<iostream>
#include<cstdio>
using namespace std;
int n;//定义一个变量,设有n个数 
int a[100005];//假设数量不超过10的5次方 
int main(){cin>>n;//输入 for(int i=1;i<=n;i++)//输入数据 {cin>>a[i]
关键字:如何开发自己的软件_杭州网站推广方案平台_微信朋友圈推广软文_重庆seo网络优化师

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: