冒泡排序法c语言
C语言冒泡排序算法
用冒泡排序法对任意输入的 10 个数按照从小到大的顺序进行排序。实现过程:(1) 通过两个 for 循环实现冒泡排序的全过程,外层 for 循环决定冒泡排序的趟数,内层 for 循环决定每趟所进行两两比较的次数。
(2) 程序代码如下:
运行结果:
请输入10个数:66 32 23 45 25 5 15 69 46 37排序后的顺序是: 5 15 23 25 32 37 45 46 66 69
技术要点:
本实例要求用冒泡法对 10 个数由小到大进行排序,冒泡法的基本思路是,如果要对 n 个数进行冒泡排序,那么要进行 n-1 趟比较,在第 1 趟比较中要进行 n-j 次两两比较,在第 j 趟比较中要进行 n-j 次两两比较。从这个基本思路中就会发现,趟数决定了两两比较的次数,这样就很容易将两个 for 循环联系起来了。
冒泡排序法(Bubble Sort)是一种简单的排序算法,它的基本思想是通过不断交换相邻两个元素的位置,将最大(或最小)的元素逐步“冒泡”到数组的末尾(或开头)。具体实现时,可以使用双层循环,外层循环控制轮数,内层循环控制每轮比较和交换。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1)。虽然它的效率不如快速排序等高级算法,但它易于理解和实现,适用于小规模数据的排序。
C语言冒泡排序法详解
第一讲:冒泡排序法基本原理
所谓冒泡排序法,就是对一组数字进行从大到小或者从小到大排序的一种算法。具体方法是,相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。一般地,如果有N个数需要排序,则需要进行(N-1)趟起泡,我们以从小到大排序为例来看一下,具体情况如下图所示:
第二讲:C语言程序的实现
首先,为了实现效果,我们得先定义一组待排序的数列以及各个变量。具体情况如下图:
2.算法的实现,具体情况如图:
3.运行结果显示。具体情况如图:
第三讲:在上一讲的基础上对程序算法进行优化
按照上面的程序,在第五趟(i=5)起泡时,计算机不仅要对“1,5,6,4”两两进行比较并排序,还要对“7,8,9,13”进行两两比较并排序,而“7,8,9,13”在第四趟起泡时就已经排序好了,所以再进行比较的话,就显得非常多余。图示如下:
2.在上面程序的基础上进行优化。具体情况如图所示:
3.优化后的输出结果。如图所示:
excel怎么冒泡排序
①新建一张表,在里面随机录入一些整数,然后添加3种排序方法列表。
②我们实现介绍常用的第一种,也是运用得最频繁的一种,那就是rank排序,这个函数我们再这里就不着赘述,在B2单元格中输入公式:=RANK(A2,A$2:A$22),简单说明下,在对一组数据进行排序时候,需要对列进行绝对引用,这样才不会形成单元格偏移。
③回车之后,B2单元格便会显示A2在所有数据的排序,然后往下进行填充,便会得到用rank函数排序的结果。
④现在我们来介绍第二种方法,利用条件统计函数countif函数,没听错吧,countif函数,真的是它,以前在学习数据结构时候有一种排序的方法叫做冒泡排序,就是依次比较,我们用countif统计出第一个值,然后依次比较得出结果。于是我们在C2单元格中输入公式:=COUNTIF(A$2:A$22,">"&A2)+1。
⑤回车之后,同样得到的结果也是19名,与之前排序结果相同,再往下填充,完成排序。
⑥最后一种利用sum求和函数进行排序,这是一个数组公式,其实原来和countif函数的上路是一致的,只是改变下 写法和变换了函数。在D2单元格中输入公式:=SUM(--(A$2:A$22>A2))+1。
⑦这里必要要注意了,由于是数组公式,所以在计算结果的时候需要同时按住Ctrl+shift键+enter键,然后在往下进行填充。
⑧这样,我们就能通过三种不同的函数实现数据的排序功能,其实很多函数的功能不只是它我们所知道的基本那个,根据参数的不同,组合不同,能让其功能扩大不小。
还没有评论,来说两句吧...