冒泡排序,这是一种较为简单的排序算法,当然,今天写这篇文章呢,主要也是放松一下,毕竟冒泡排序不难,而且先准备着,万一以后忘记了,也好回过头来再复习复习。
冒泡排序,顾名思义,就是慢慢有泡泡冒出来,在我们现实生活中呢,比方说水里的泡泡,质量较轻,就会慢慢浮起来,而且质量越轻,就越容易浮起来。
所以,在计算机领域中呢,自然也是同理。
一组数据,其中的各个数据就统称为各个元素,元素的大小可以代表泡泡的质量,元素越小,那就放在前面,元素越大,那就放在后面。
而且,这些元素呢,是一个一个浮上来的。
冒泡排序的原理从第一个元素开始,与第二个元素进行比较,如果第一个元素比第二个元素大,那就交换两个元素的位置,同理,交换后的元素与第三个元素进行比较,如果交换后的元素比第三个元素大,那就交换两个元素的位置,直到最后一位数为最大的元素为止。
这是第一遍排序,之后就是不断重复这一过程,直到整个数列以从小到大排序的方式排序。
这样讲可能还不够直观,用一张图来表示就显得直观好理解了:
显然,就是每次排序交换数据,目的都是把最大的元素放到最后,然后不停地循环,将最终的结果输出。
用流程图来理清逻辑根据该流程图,其实进行冒泡排序的逻辑就非常清楚了:
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]);
}
}
,