冒泡排序
实现思路
对于一个数组int[] array = {9, 7, 5, 8, 4, 2, 1, 3}实现升序排序,从左向右挨个与自己比较,大于右边交换位置
第一轮比较:
初始数组{9, 7, 5, 8, 4, 2, 1, 3},开始比较数组下标0的位置
第1次:9比7大,交换。 {9, 7, 5, 8, 4, 2, 1, 3} >>> {7, 9, 5, 8, 4, 2, 1, 3}
第2次:7比5大,交换。 {7, 9, 5, 8, 4, 2, 1, 3} >>> {5, 9, 7, 8, 4, 2, 1, 3}
第3次:5比8小,不交换。 {5, 9, 7, 8, 4, 2, 1, 3}
第4次:5比4大,交换。 {5, 9, 7, 8, 4, 2, 1, 3} >>> {4, 9, 7, 8, 5, 2, 1, 3}
第5次:4比2大,交换。 {4, 9, 7, 8, 5, 2, 1, 3} >>> {2, 9, 7, 8, 5, 4, 1, 3}
第6次:2比1大,交换。 {2, 9, 7, 8, 5, 4, 1, 3} >>> {1, 9, 7, 8, 5, 4, 2, 3}
第7次:1比3小,不交换。 {1, 9, 7, 8, 5, 4, 2, 3}
第二轮比较:
初始数组为第一轮比较后的顺序{1, 9, 7, 8, 5, 4, 2, 3},开始比较数组下标1的位置
第1次:9比7大,交换。 {1, 9, 7, 8, 5, 4, 2, 3} >>> {1, 7, 9, 8, 5, 4, 2, 3}
第2次:7比8小,不交换。 {1, 7, 9, 8, 5, 4, 2, 3}
第3次:7比5大,交换。 {1, 7, 9, 8, 5, 4, 2, 3} >>> {1, 5, 9, 8, 7, 4, 2, 3}
第4次:5比4大,交换。 {1, 5, 9, 8, 7, 4, 2, 3} >>> {1, 4, 9, 8, 7, 5, 2, 3}
第5次:4比2大,交换。 {1, 4, 9, 8, 7, 5, 2, 3} >>> {1, 2, 9, 8, 7, 5, 4, 3}
第6次:2比3小,不交换。 {1, 2, 9, 8, 7, 5, 4, 3}
第三轮,第四轮…
package primary;
import java.util.Arrays;
/**
* 冒泡排序
*
* */
public class Code07_BubbleSort {
public static void main(String[] args) {
int[] arr = new int[]{9, 7, 5, 8, 4, 2, 1, 3};
System.out.println(Arrays.toString(arr));
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 排序
*/
public static void bubbleSort(int arr[]) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
// 依次比较相邻两个元素,然后交换
if (arr[i] > arr[j]) {
swap(arr, i, j);
}
}
}
}
/**
* 元素交换
*/
public static void swap(int arr[], int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}