冒泡排序是交换排序中一种简单的排序方法。其处理过程为:
(1)将整个待排序的记录序列划分成有序区和无序区,初始状态有序区为空,无序区包括所有待排序的记录。
(2)对无序区从前向后依次将相邻记录的关键字进行比较,若逆序将其交换,从而使得关键字值小的记录向上"飘浮"),关键字值大的记录好像石块,向下“堕落”。 每经过一趟冒泡排序,都使无序区中关键字值最大的记录进入有序区,对于由n个记录组成的记录序列,最多经过n-1趟冒泡排序,就可以将这n个记录重新按关键字顺序排列。
这是SortArithMetic类的实现,在这个类里面主要写清楚了冒泡排序的逻辑实现
package demo2;
import java.util.Arrays;
public class SortArithMetic {
public int[] bubbleSort(int[] data) {
boolean exchange;
int tmp;
int n = data.length;
for (int i = 1; i < n; i++) {
exchange = false;
for (int j = 0; j < data.length - i; j++)
if (data[j] > data[j + 1]) {
tmp = data[j + 1];
data[j + 1] = data[j];
data[j] = tmp;
exchange = true;
}
if (!exchange)
break;
}
return data;
下面是对应的测试代码
package demo2;
public class TestSortArithMetic {
public static void main(String[] args) {
int data[] = {70, 30, 40, 10, 80, 20, 90, 100, 75, 60, 45};
System.out.println("原始的數字序列");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
SortArithMetic sort = new SortArithMetic();
//QuickSort sort = new QuickSort();
data = sort.bubbleSort(data);
//data=sort.quickSort(data);
System.out.println("排序后的數字序列:");
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
}
}
这是代码运行后的结果



