c++之排序方法大杂烩-创新互联

排序方法大杂烩 选择排序 思路

每一次循环将每一个数和第一个数相比较,如果找到比第一个数更小的数就将minn给它,这样一轮下来就找出最小(大)的数放在最前面了,以此类推,每次都找到未排序的序列里的最小数,并放到未排序序列里的第一个。

成都创新互联从2013年创立,先为拉孜等服务建站,拉孜等地企业,进行企业商务咨询服务。为拉孜企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。代码

在这里插入图片描述

注:

我写的代码里交换时用了最原始的方法,也就是定义一个新变量,还可以用swap函数,写法为swap(两个要交换的数中间用,隔开).

冒泡排序 思路

通过元素的两两比较,判断是否符合要求(大/小),如果不符合就交换位置,小(大)的元素通过不断交换会慢慢的换到前面,最后全部排列好

代码

在这里插入图片描述

注:

这个代码是初始版,非常好懂,时间复杂度也比较高,下面给一个优化版:
在这里插入图片描述
定义一个bool类型的flag变量,减少时间复杂度

插入排序 思路

就像整理扑克牌一样,每次从数组里拿出一个元素放好,然后再拿第二个元素与第一个相比较,这样这两个元素就有序了,如果要排到已经有序的数列的中间或最前,需要将后面的元素每个的下标都++,剩下元素会依次被拿出,并且排列好,当所有元素都被拿出时,排序就完成了

代码

在这里插入图片描述

桶排序 思路

准备数据范围内数据的数量个桶,例如范围为小于10,则准备11个桶,编号0-10,将每个数组元素放进相应的桶里,插入一个🚩,然后输出的时候看每个桶里有多少个🚩就输出多少次桶的序号(不是桶里🚩的数量!)

代码

在这里插入图片描述

sort函数排序 思路

这是一个函数,用起来就比较简单了,可以这样写sort(起始的地址,结束的地址,排序的方法),结束地址是最后一个数据的后一个地址,排序方法可以是升序或降序,如果这个参数不写则默认时升序.

代码

在这里插入图片描述

注:

这段是升序的代码,下面是降序的代码
在这里插入图片描述

注:

如果将函数里的x>y改为x排序方法总结

排序算法区别时间复杂度
选择排序发现不符合要求的先记录下标,循环完成后再交换O(n²)
冒泡排序一发现有不符合要求的就交换O(n²)
插入排序将元素一个一个拿出来比较再放好并后移O(n²)
桶排序还需要一个数组当作桶来存储数据O(n²)
sort排序函数,可以直接调用n*log2n
Tips

①scanf,printf相比较cin,cout效率更高,所以当数据范围很大的时候,为了防止超时,可以用c语言的输入输出(scanf,printf)
②数组赋值时,如果全部赋值为0,则可以直接写a[10][10]={0}(举个例子),但是如果赋值成0以外的数,第一种方式是使用memset函数,写法为memset(数组名,赋值的数,数组的长度),如果不知道数组的长度可以直接调用sizeof函数,写法为sizeof(数组名).但是需要注意的是memset只能正确赋值0和-1,如果要赋值成其他数,只能用for循环遍历,每个元素赋值为想要赋值的数
③如果想要打换行,可以用endl或者\n,用endl时必须得这样写cout<④如果题目中的数据范围非常大,最好将定义定在main函数外面,也就是全局的,不然很有可能会超时或报错
⑤建议使用万能头文件#include

制作不易,点个赞吧💕💖

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:c++之排序方法大杂烩-创新互联
本文路径:http://hbruida.cn/article/hehdd.html