数组排序之——冒泡排序

数组排序是经常会遇到的需求。排序的种类有很多,本文着重讲解冒泡排序。

冒泡排序在排序中占据着不可动摇的地位,经常在编程或者是面试过程遇到冒泡排序的问题。

冒泡排序的原理:

两两相邻做比较,数值大的向后放。

举例:

数组排序之——冒泡排序

此数组中存在五个无序的数据。 接下来的操作 我们就是要给这个数组的数据进行排序。

思路:

让相邻的两个数据进行比较,如果发现前面的数据比后面的数据大,则交换这两个数据。

第一轮比较

比较的下标 0-1 1-2 2-3 3-4 ,通过此次比较我们的效果如下

数组排序之——冒泡排序

第一轮比较(红色部分)

第一轮比较中发现 比较了四次,当每次把大的数据向后移动,最终将最大的数据7放置到了数组的最后一个位置。 由此可见,每比较一轮可以确定一个数据的位置。那么五个数据需要比较四轮即可完成排序。

第一轮的比较结果为

4,1,6,2,7

第二轮比较

因为上一轮中找到了7是最大的数据,所以本轮不需要进行比较7.

比较位置为 0-1 1-2 2-3

数组排序之——冒泡排序

第二轮比较(蓝色部分)

第二轮中发现了数组中次大数据 6

所以第二轮比较结果为:

1,4 ,2,6,7

第三轮比较:

因为前两轮已经确定了6,和7的位置,所以本轮不需要比较这两个位置

第三轮比较位置: 0-1 1-2

数组排序之——冒泡排序

第三轮比较(绿色部分)

交换了 4与2 ,比较结果 1,2,4,6,7

虽然我们发现现在数据是有顺序的,但是我们还没有真正的让1和2 进行过比较所以为了确保数据一定是有序 的我们需要第四轮比较

第四轮比较:

因为前三轮已经确定了 4,6,7 的位置,所以本轮不需要参与比较

第四轮比较位置 : 0-1

数组排序之——冒泡排序

第四轮比较(橙色部分)

此时结果为 1,2,4,6,7

这样通过四轮的比较,发现我们的数组变得有序了。

由此可见,我们是通过数组.length-1轮的比较是可以将数组排好序的。接下来,用代码实现:

数组排序之——冒泡排序

冒泡排序代码实现

运行结果如下:

数组排序之——冒泡排序

运行结果


分享到:


相關文章: