其他分享
首页 > 其他分享> > 冒泡排序 C语言

冒泡排序 C语言

作者:互联网

冒泡排序 C语言

最近有个朋友问我冒泡排序,给ta讲了几遍,感觉自己理解的还可以吧,就写篇博客总结一下。
冒泡排序其实就是取一堆数字中的与其他数字进行比较,然后根据判断条件执行换位操作,里面用到了一个嵌套循环。
就比如说给你一串数字:7 4 8 9 2 ,按照从小到大的顺序排列。冒泡排序的流程就是先取出来7,然后先跟4比较,比4大,就把7跟4换位。这时候数列就变成了4 7 8 9 2 。
然后再拿7跟8比较,比8小,就不换位,数列不变。
再拿8跟9比较,8比9小,不换位,数列不变。
再拿9跟2比较,9比2大,换位,这时候数列就变成了7 4 8 2 9。
这样我们会发现,每次比较一趟,就会把最大的那个放到了最后面。
因此,如果想把7 4 8 9 2这五个数排列好,就需要循环4躺,因为第4躺时,第二小的数字(也就是4)就已经排到了7的左边,2的右边
(2 4 7 8 9),这时候就已经排列好,不需要进行第五次排列。

这是我自己写的代码,可能会不规范:
在这里插入图片描述
运行结果如下:在这里插入图片描述
首先外面的循环:在这里插入图片描述
这个循环是为了确定我们要比较的躺数,一趟只会将一个最大的数排到后面,所以五个数要排四次,i<5。
再看第二次循环:在这里插入图片描述
这一个是为了确定每躺比较的次数。而这个j<5-1的意思是:因为我们每次拿的是五个数字中最左边的数字,所以剩下只有四个数字。比如第一次循环时,我们拿的3,剩下是5 4 2 8因此只需要拿3跟5 4 2 8 比较就行,就只需要比较4次,因此我们第二个for循环中j需要减去1。
而比如当我们排好第一个数字后,也就是5排到了最后面时(因为8是最大的,而且在最后面),现在待排列的数字仅有3 4 2,所以我们这次只需要拿3跟4 2 比较,所以只需要比较两次,而此时i等于1(因为里面的for循环已经循环过一次),所以为了减少计算机运算量,我们写成j-1-i,意思是后面的数排列好后就不再拿前面的数跟他们比较。
最后写个for循环将数组打印出来就好。
在这里插入图片描述
这就是整个冒泡排序。
而我们也能发现,这样先把要排列的数写到程序里有点麻烦,我们为什么不写成直接输入数字,这样更简单。
而我们要考虑怎样将输入的数字存到我们定义的数组里,而且还要考虑输入的数字个数。
首先要输入数字就要用到scanf,而如何输入多个数字并存到数组里?我们也要用到for循环。
所以可以这样子写:在这里插入图片描述
定义变量n,而这个n的判断条件也是我们要输入数字的个数,我写的是n=0,n<5,也就是只能输入五个数字。
这里面有点要注意的是就是给将输入的数字存到数组里的写法 arr[n] 我昨晚就错在这好长时间

标签:数字,换位,冒泡排序,C语言,循环,比较,数列
来源: https://blog.csdn.net/m0_61414664/article/details/120890434