C语言———冒泡算法

Posted 嘎嘣脆的大米饭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言———冒泡算法相关的知识,希望对你有一定的参考价值。

一:冒泡算法是怎么样去对一堆无序数字进行排序的?

1.首先我先说明一下冒泡排序的特点:冒泡排序特点就是每一趟排序把最大的数字找出来并且同时放在最后。这样通过有限次的排序后,有限-无序-序列的数字就会被排序成有序序列。

2.那么冒泡算法是如何对数字进行排序的呢?

概念:以第一个数字为首,与后面第二个数字进行比较,如果第一个数字比第二个数字大,那么就把第一个数字与第二个数字的位置进行交换,否则该数字位置不变。然后第二个数字又与第三个数字进行比较,如果第二个数字大于第三个数字的话,则第二个数字与第三个数字进行位置交换......一直重复这样的操作,那么一趟排序下来就可以找出该序列的最大值了。(注意:每一趟排序的时候,之前所有排序出来的最大值不再参与本次排序)

下面是对:1 23 4 98 70 10 9 这一无序数字序列进行第一趟排序

①:1比23小,不调换位置。此时序列为:1 23 4 98 70 10 9

②:23比4大,调换位置。此时序列为:1 4 23 98 70 10 9(23与4调换了位置)

③:23比98小,不调换位置。此时序列为:1 4 23 98 70 10 9

④:98比70大,调换位置。此时序列为:1 4 23 70 98 10 9(98与70调换了位置)

⑤:98比10大,调换位置。此时序列为:1 4 23 70 10 98 9(98与10调换了位置)

⑥:98比9大,调换位置。此时序列为:1 4 23 70 10 9 98(98与9调换了位置)

需要注意的是,当进行第二趟排序的时候,是不需要与98这个数字比较的。因为第一趟排序可以把无序序列中的最大数字排在后面,而第二趟就是把第二大的数字放在后面,第三趟排序就是把第三大的数字放在后面.......

如果觉得难以理解的朋友可以在草稿纸上画两个杯子,一号杯子装着所有的无序数字,二号杯子则为空。把每一趟排序出来的数字有序地放在二号杯子里面,然后对一号杯子重新排序。你会发现当你第二次对一号杯子进行排序的时候,所找出来的那个最大数字其实就是原来一号杯子所有数字的第二大数字。而第三次对一号杯子排序则找出来的是原有序列的第三大的数字。

二:代码实现如下:

 运行结果如下:

 

以上是关于C语言———冒泡算法的主要内容,如果未能解决你的问题,请参考以下文章

C语言———冒泡算法

排序算法——冒泡排序(C语言实现)

「C语言」「算法」数组的冒泡排序

C语言试题172之实现冒泡排序算法

C语言试题172之实现冒泡排序算法

C语言入门算法丨冒泡排序算法详解,绝不摆烂。