簡單排序之 【插入排序 選擇排序 氣泡排序】
阿新 • • 發佈:2021-06-10
package whale; /** * @Author: WhaleFall541 * @Date: 2021/4/4 16:08 */ public class SimpleSort { public static void main(String[] args) throws InterruptedException { int[] arr = {-1, 20, -3, -10, 100, -255}; // selectSort(arr); // bubble(arr); insertSort(arr); StringBuilder sb = new StringBuilder(); for (int i : arr) sb.append(i).append(" "); System.out.println("sb = " + sb); } // 插入排序 private static void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) { // 需要將i插入到前面子序列 if (arr[i] < arr[i - 1]) { int k = arr[i], j; // i為要插入的元素,j為i往前的元素 // 如果arr[j]比k大 則把arr[j]元素往後挪 // 如果arr[j]比k小則直接插入元素在空位上 for (j = i - 1; j >= 0 && arr[j] > k; j--) arr[j + 1] = arr[j]; // 將元素放到比k小的後面 arr[j + 1] = k; } } } //選擇排序 private static void selectSort(int[] arr) { for (int i = 0; i < arr.length; i++) { int k = i;// i是要排序的數下標 // 跟i下標後面的每個元素比較記錄下來arr[k]最小的k值 for (int j = i + 1; j < arr.length; j++) { if (arr[k] > arr[j]) k = j; } // 最小的arr[k] 和 當前排序位置arr[i]互換 swap(arr, i, k); } } // 氣泡排序 private static void bubble(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) swap(arr, i, j); } } } private static void swap(int[] arr, int a, int b) { int tmp = arr[a]; arr[a] = arr[b]; arr[b] = tmp; } }