冒泡排序是一种简单实用的排序算法。是稳定的。
其基本思想为:从第一个元素开始,与相邻的后一个比较,如果前一个元素大于后一个元素,则元素交换,否则不动;然后比较第二个和第三个,前大后小则交换,否则不换;如此下去,比较完第n-1个和第n个元素之后,第一趟排序结束,此时最大的元素被换到了最后面。第二趟继续以上动作,只比较前n-1个元素即可,因为最大的已经到了最后面,无需再比较,第二趟结束后,这时倒数第二大的元素被换到了倒数第二个位置。继续如此比较,n-1趟之后第二小的元素被放到了第二位,这时排序结束。
算法演示如下:
给定序列 5 4 3 2 1
第一趟排序演示:
第一次比较:4 5 3 2 1
第二次比较:4 3 5 2 1
第三次比较:4 3 2 5 1
第四次比较:4 3 2 1 5
第一趟排序结束
第二趟排序结果:3 2 1 4 5
第三趟排序结果:2 1 3 4 5
第四趟排序结果:1 2 3 4 5
至此,排序完成。
写冒泡排序程序的基本思路如下:
循环n-1次
只要一趟比较有元素交换,就还需要一趟比较,直至没有元素交换,则说明数组以排好序。
函数模板代码如下: