冒泡排序是交换排序中一种简单的排序方法。其处理过程为:
(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] + " "); } } }
这是代码运行后的结果