排序查找之冒泡排序

排序查找之概述

冒泡排序

分析

有一个数组,内部是一段无序的int类型的数据,如何通过一个算法来对其进行排序操作呢?这里使用的是冒泡排序的算法。顾名思义,冒泡排序使用的方法是(升序):

让较大的数如同气泡般缓缓向后移动,具体实现就是:比较第一个与第二个数,如果是升序,则不发生任何变化,但是如果不是升序,那就第一个和第二个互换位置。最后再比较第二个和第三个数并执行如上炒作,一直到数组全部遍历完成。现在为止冒泡排序的第一趟排序完成,数组中最大的数已经被换到了最后一位。

然后再进行第二趟操作,与第一趟类似比较第一个与第二个数,依次类推,一直遍历到数组倒数第二位数据(最后一位在第一趟已经确定位置,不用比较)。

最后一直到没有两个数进行比较,此时数组里的数据被排列成了升序,排序完成。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static int[] doSort(int[] arr){
int len = arr.length-1;
int i,j,temp;
for (i = 0;i<len;i++){
System.out.println("第"+(i+1)+"趟");
for (j=0;j<len-i;j++){
if (arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}

总结

如何写出冒泡排序算法的代码?

对算法进行拆分,例如,拆分每一趟使用for (i = 0;i<len;i++)控制趟数,用for (j=0;j<len-i;j++)控制比较位置的变化,用if (arr[j]>arr[j+1])来判断是否进行交换操作。