每一次循环将每一个数和第一个数相比较,如果找到比第一个数更小的数就将minn给它,这样一轮下来就找出最小(大)的数放在最前面了,以此类推,每次都找到未排序的序列里的最小数,并放到未排序序列里的第一个。
成都创新互联从2013年创立,先为拉孜等服务建站,拉孜等地企业,进行企业商务咨询服务。为拉孜企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。代码注:我写的代码里交换时用了最原始的方法,也就是定义一个新变量,还可以用swap函数,写法为swap(两个要交换的数中间用,隔开).
冒泡排序 思路通过元素的两两比较,判断是否符合要求(大/小),如果不符合就交换位置,小(大)的元素通过不断交换会慢慢的换到前面,最后全部排列好
代码注:这个代码是初始版,非常好懂,时间复杂度也比较高,下面给一个优化版:
定义一个bool类型的flag变量,减少时间复杂度
就像整理扑克牌一样,每次从数组里拿出一个元素放好,然后再拿第二个元素与第一个相比较,这样这两个元素就有序了,如果要排到已经有序的数列的中间或最前,需要将后面的元素每个的下标都++,剩下元素会依次被拿出,并且排列好,当所有元素都被拿出时,排序就完成了
代码桶排序 思路准备数据范围内数据的数量个桶,例如范围为小于10,则准备11个桶,编号0-10,将每个数组元素放进相应的桶里,插入一个🚩,然后输出的时候看每个桶里有多少个🚩就输出多少次桶的序号(不是桶里🚩的数量!)
代码sort函数排序 思路这是一个函数,用起来就比较简单了,可以这样写sort(起始的地址,结束的地址,排序的方法),结束地址是最后一个数据的后一个地址,排序方法可以是升序或降序,如果这个参数不写则默认时升序.
代码注:这段是升序的代码,下面是降序的代码
如果将函数里的x>y改为x ①scanf,printf相比较cin,cout效率更高,所以当数据范围很大的时候,为了防止超时,可以用c语言的输入输出(scanf,printf) 制作不易,点个赞吧💕💖 你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
Tips排序算法 区别 时间复杂度 选择排序 发现不符合要求的先记录下标,循环完成后再交换 O(n²) 冒泡排序 一发现有不符合要求的就交换 O(n²) 插入排序 将元素一个一个拿出来比较再放好并后移 O(n²) 桶排序 还需要一个数组当作桶来存储数据 O(n²) sort排序 函数,可以直接调用 n*log2n
②数组赋值时,如果全部赋值为0,则可以直接写a[10][10]={0}(举个例子),但是如果赋值成0以外的数,第一种方式是使用memset函数,写法为memset(数组名,赋值的数,数组的长度),如果不知道数组的长度可以直接调用sizeof函数,写法为sizeof(数组名).但是需要注意的是memset只能正确赋值0和-1,如果要赋值成其他数,只能用for循环遍历,每个元素赋值为想要赋值的数
③如果想要打换行,可以用endl或者\n,用endl时必须得这样写cout<
⑤建议使用万能头文件#include
网页标题:c++之排序方法大杂烩-创新互联
转载来于:http://cdweb.net/article/hehdd.html