1. 程式人生 > >Java選擇排序,插入排序,快速排序

Java選擇排序,插入排序,快速排序

col log println 左移 i++ void -1 left oid

public class Test {
    public static void main(String[] args) {
        int a[] = { 1, 2, 3, 4, 5 };
        // 選擇排序(a);
        // 插入排序(a);
        quicksort(a, 0, a.length - 1);
        System.out.print("排序後:");
        for (int n : a) {
            System.out.print(n + " ");
        }
    }

    
static void 選擇排序(int[] a) { int pos = 0; for (int i = 0; i < a.length - 1; i++) { pos = i; // 定位到i之後的最值 for (int j = i; j < a.length; j++) { if (a[pos] < a[j]) { pos = j; } }
// 最值和i值交換 int t = a[pos]; a[pos] = a[i]; a[i] = t; } } static void 插入排序(int[] arr) { for (int i = 1; i < arr.length; i++) { System.out.print(i + ":"); // 假定(0->(j-1))是有序的,看j排在哪裏 for (int
j = i; j > 0; j--) { if (arr[j] > arr[j - 1]) { int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } else { // 假定前面是有序的,則只需要交換一次即可 break; } } for (int n : arr) { System.out.print(n + " "); } System.out.println(); } } static void quicksort(int arr[], int left, int right) { if (left < right) { // 定位最左 int key = arr[left]; int i = left; int j = right; while (i < j) { while (i < j && arr[j] < key) { // 高標左移← j--; } if (arr[i] != arr[j]) { // 高位:小的往左邊拉 arr[i] = arr[j]; } while (i < j && arr[i] > key) { // 低標右移→ i++; } if (arr[i] != arr[j]) { // 低位:大的往右邊拉 arr[j] = arr[i]; } } arr[i] = key; quicksort(arr, left, i - 1); quicksort(arr, i + 1, right); } } }

Java選擇排序,插入排序,快速排序