微信搜索【程序员囧辉】,关注这个坚持分享技术干货的程序员。
前言
对于Java程序员来说,一般对于算法没有什么要求,但是有一个算法除外——排序算法。排序算法不仅在日常开发中经常用到,还是面试中几乎必问的题目,并且通常是以“手写代码”的形式出现,因此掌握好排序算法是对每一个程序员的最基本要求。
谈到排序算法,第一个浮现在我们脑中的一定是“冒泡排序”。“冒泡排序”由于较简单的过程,得到大多数程序员的“厚爱”,本文将简单的介绍排序算法的整个过程。
基本思想
冒泡排序算法的运作如下:
- 比较两个相邻的数,如果前面的数大于后面的数,则将这两个数交换位置。第一次遍历后,最大的数会被放到数组的最后位置,即array[length - 1]。
- 第二次遍历时跳过最后一个元素,因为该元素通过第一次遍历已经确定是最大值。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
例子
下面通过一个例子来看看冒泡排序是怎么工作的。红色的数为正在比较的数,原数组如下。
0 |
1 |
2 |
3 |
19 |
15 |
37 |
12 |
第一次循环:
1.首先比较array[0]和arary[1],即19和15;因为19 > 15,因此交换两个数的位置,交换完的数组如下。
0 |
1 |
2 |
3 |