彻底搞懂 冒泡排序算法
C语言经典算法
冒泡排序作为一维数组的典型应用
在江苏转本计算机大类的技能考察刚要中,明确要求掌握使用一维数组进行排序,
冒泡排序是排序算法的最经典,也是最有可能考察的算法
一、基本原理(由小到大)
冒泡排序(Bubble Sort)是一种排序算法
它会遍历若干次要排序的数列每次遍历时,它都会从前往后依次的比较相邻两个数的大小;
将相邻两个数比较,将大的调到后头。
如果有n个数,则要进行n-1趟比较。
在第1趟中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。
如果前者比后者大,则交换它们的位置。
二、冒泡排序的详细讲解
上图中有6个数,5 3 9 6 2 7
要进行6- 1 = 5趟比较。
这六个数组成的无序序列[5,9,3,6,2,7],由小到大排序。
按照冒泡排序算法,相邻元素两两比较,过程如下:
第一轮:
首先比较5和9,5比9小,所以元素位置不变:第一次交换结果为 [5, 9, 3, 6, 2, 7]
继续比较9和3,9比3大,所以互换位置:第二次交换结果为[5, 3, 9, 6, 2, 7]
继续比较9和6,9比6大,所以互换位置:第三次交换结果为[5, 3, 6, 9, 2, 7]
继续比较9和2,9比2大,所以互换位置,第四次交换结果为[5, 3, 6, 2, 9, 7]
继续比较9和7,9比7大,所以互换位置,第五次交换结果为[5, 3, 6, 2, 7, 9]
这样一来 最大元素9像气泡一样,飘到了最右面。
这时候,我们的冒泡排序的第一轮结束了。数列最右侧的元素9可以认为是一个有序区域,有序区域目前只有一个元素。
第二轮冒泡排序
首先比较5和3,5比3大,所以互换位置,第二轮第一次交换结果为[3, 5, 6, 2, 7, 9]
继续比较5和6,5比6小,所以元素位置不变,第二轮第二次交换结果为[3, 5, 6, 2, 7, 9]
继续比较6和2,6比2大,所以互换位置,第二轮第三次交换结果为[3, 5, 2, 6, 7, 9]
继续比较6和7,6比7小,所以元素位置不变,第二轮第四次交换结果为[3, 5, 2, 6, 7, 9]
这样一来,经过两轮排序,右侧有序序列变成了两个元素。
第三轮交换结果为[3, 2, 5, 6, 7, 9]
第四轮交换结果为[2, 3, 5, 6, 7, 9]
第五轮交换结果为[2, 3, 5, 6, 7, 9]
到此为止,元素变成有序的了
三、两种形式的代码的实现
|
第二种带函数的冒泡排序的实现
|
2023 新生群 已经开放申请加入
超前计划 即将开始
按要求 申请 即可加入
4月福利课程 即将上线
群内首发