介绍
冒泡排序是一种简单的排序方法。它的核心思想是对数组进行=N - 1=次遍历,每一次遍历的过程中,会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!
方法论
正像刚才介绍的一样,为了给一个数组进行排序,我们遍历这个数组并且依次比较两个相邻的数组元素,如果前面的元素大于后面的元素,则交换两者之间的位置。对于一个数组长度为N的数组需要进行N - 1此遍历操作。
接下来我用数组{47,17, 23, 5, 76, 10}来举例演示冒泡排序:
- 进行第一次遍历,并从比较 47 和 17 的大小开始,因为
47 > 17, 所以需要交换两者的位置,结果如下:
【17,47】,23,5,76,10 - 接下来将比较的下标往右移一位,并重复上一步操作,比较 47 和 23 :
17,【23,47】,5,76,10 - 继续重复第2步,直到下标移动到 N - 1结束
17, 23,【5,47】,76,10
17, 23,5,【47,76】,10
17,23,5,47,【10, 76】
可以看到
上图
下图是以 {45, 17, 23, 5, 76, 10} 为例,演示冒泡排序5次(N = 6)遍历的过程
可以看到, 在第一次遍历之后,数组中最大的元素 76 已经在数组的最后位置。我们需要做的就是重复这个遍历的操作,直到数组中最后一个元素5被排序为止。