龙空技术网

用C语言实现冒泡排序,这是一种较为简单的排序算法

小萌九尾 344

前言:

眼前你们对“c语言冒泡排序代码”大概比较关注,朋友们都想要分析一些“c语言冒泡排序代码”的相关资讯。那么小编同时在网络上搜集了一些关于“c语言冒泡排序代码””的相关知识,希望看官们能喜欢,姐妹们快快来学习一下吧!

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

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

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

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

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

冒泡排序的原理

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

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

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

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

用流程图来理清逻辑

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

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]);    }    }

标签: #c语言冒泡排序代码