c语言如何写冒泡排序(这是一种较为简单的排序算法)

首页常识更新时间:2022-12-23 05:14:59

冒泡排序,这是一种较为简单的排序算法,当然,今天写这篇文章呢,主要也是放松一下,毕竟冒泡排序不难,而且先准备着,万一以后忘记了,也好回过头来再复习复习。

冒泡排序,顾名思义,就是慢慢有泡泡冒出来,在我们现实生活中呢,比方说水里的泡泡,质量较轻,就会慢慢浮起来,而且质量越轻,就越容易浮起来。

所以,在计算机领域中呢,自然也是同理。

一组数据,其中的各个数据就统称为各个元素,元素的大小可以代表泡泡的质量,元素越小,那就放在前面,元素越大,那就放在后面。

而且,这些元素呢,是一个一个浮上来的。

冒泡排序的原理

从第一个元素开始,与第二个元素进行比较,如果第一个元素比第二个元素大,那就交换两个元素的位置,同理,交换后的元素与第三个元素进行比较,如果交换后的元素比第三个元素大,那就交换两个元素的位置,直到最后一位数为最大的元素为止。

这是第一遍排序,之后就是不断重复这一过程,直到整个数列以从小到大排序的方式排序。

这样讲可能还不够直观,用一张图来表示就显得直观好理解了:

显然,就是每次排序交换数据,目的都是把最大的元素放到最后,然后不停地循环,将最终的结果输出。

用流程图来理清逻辑

根据该流程图,其实进行冒泡排序的逻辑就非常清楚了:

1、用数组存储给定的一组数列,然后要求进行冒泡排序。

2、其次也就是要进行判断,如果说第一个元素比第二个元素大,那就交换两个元素的位置,后面也同理。

3、交换位置的时候要特别注意,这里是比较难的地方,因为在数组中,交换位置后,元素会发生变化,但是呢,我们只需要交换位置,并不需要变化元素,所以这里就会用到一个临时变量来进行暂时存储。

4、以上这些步骤进行之后,只是得到第一次排序,正如我之前所写,这些数据需要排序八次才能得到最终结果,所以在这个for循环外面再套一个for循环,也就是遍历八次。

5、最后输出结果。

代码实现

这道题目因为用到数列,还有不少元素,所以用数组来存储这些数据是最好的方法。

注意,数组的下标是从0开始的。

要做出这道题呢,其实我们只需要一步步分解即可:

首先是把整个数组给输出出来:

那就用到一次for循环遍历

之后呢,先进行第一次排序,这里要注意用到一个变量来暂时存储Bubble[i 1]的元素,这样的话在Bubble[i 1]变化后,还能用该变量来赋值给Bubble[i],达到交换的目的。

以上是第一次排序得到的结果,如果要得到最终的结果,那自然也需要进行八次循环。

//冒泡排序 #include<stdio.h> int main(){ int Bubble[9] = {2, 5, 3, 9, 41, 21, 7, 10, -1};//需要排序的数组,目的是从小到大排序 int Temp;//Temporary Variable,一个临时变量来存储元素 for(int j = 0; j < 8; j ){ for(int i = 0; i < 9; i ){ if(Bubble[i]>Bubble[i 1]){ Temp = Bubble[i 1]; Bubble[i 1] = Bubble[i]; Bubble[i] = Temp; } printf("%d ", Bubble[i]); } printf("\n"); } } 测试结果:

总结

冒泡排序还是非常简单的,不过也有要注意的地方,理清逻辑就没什么问题了。

这是单独输出最后结果的状态,只需要在外面重新遍历一次即可,单独输出,因为该数组已经发生变化了。

代码:

//冒泡排序 #include<stdio.h> int main(){ int Bubble[9] = {2, 5, 3, 9, 41, 21, 7, 10, -1};//需要排序的数组,目的是从小到大排序 int Temp;//Temporary Variable,一个临时变量来存储元素 for(int j = 0; j < 8; j ){ for(int i = 0; i < 9; i ){ if(Bubble[i]>Bubble[i 1]){ Temp = Bubble[i 1]; Bubble[i 1] = Bubble[i]; Bubble[i] = Temp; } } } for(int i = 0; i < 9; i ){ printf("%d ", Bubble[i]); } },

展开阅读全文
推荐内容
热门内容
热门文章

© 2007-2022 http://www.anhuiqq.cn,All Rights Reserved.