3.4 数组的排序

下面将介绍几种在数组里常见的排序方法。

1.数组冒泡排序

冒泡排序(Bubble Sort)是一种较简单的排序算法。

冒泡排序主要是重复地访问要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把它们交换过来。访问元素的工作是重复进行的,直到没有相邻元素需要交换为止,即该元素列已经排序完成。该算法名字的由来是因为越小的元素会经由交换慢慢浮到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

冒泡排序的代码如下:

2.数组的选择排序

选择排序(Selection Sort)是一种简单直观的排序算法。

它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(或最大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

选择排序是不稳定的排序方法。代码如下:

3.数组插入排序

所谓插入排序法(Insert Sort),就是检查第i个数字,如果在它左边的数字比它大,就进行交换,这个动作一直继续下去,直到这个数字的左边数字比它小,就可以停止了。

插入排序法主要的循环取决于两个变数:ij,每一次执行这个循环,就会将第i个数字放到左边恰当的位置。代码如下:

4.设置两层循环

循环排列(Circular Permutation)也称为圆排列、环排列等,它也是排列的一种。循环排列指从n个不同元素中取出m(1≤mn)个不同的元素排列成一个环形,既没有头也没有尾。当且仅当所取元素的个数相同、元素取法一致以及在环上的排列顺序一致时,两个循环排列才会相同。代码如下:

5.用Arrays.sort()方法排序

Arrays.sort即数组名,是指sort(byte[] a)和sort(long[] a)两种排序方法,使用这两种方法可以对数字在指定的范围内排序。这个方法在java.util这个包里面,所以在用到的时候需要先将它导入。代码如下: