Andy 胡

导航

Java选择排序,插入排序,快速排序

 
public class Test {
    public static void main(String[] args) {
        int a[] = { 1, 2, 3, 4, 5 };
        选择排序(a);
        // 插入排序(a);

        System.out.print("排序后:");
        for (int n : a) {
            System.out.print(n + " ");
        }
    }

    static void 选择排序(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            // 定位到i之后的最值
            for (int j = i + 1; j < a.length; j++) {
                if (a[i] < a[j]) {
                    int t = a[i];
                    a[i] = a[j];
                    a[j] = 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();
        }

    }
}

 

 

 快速排序

package ah.sort;

public class QuickSortMy {
    static void printArray(int a[]) {
        for (int i : a) {
            System.out.print(i + "\t");
        }
        System.out.println();
    }

    static void qsort(int a[], int left, int right) {
        if (left >= right) {
            return;
        }
        printArray(a);
        int key = a[left];
        int i = left, j = right;
        while (i < j) {
            while (i < j && a[j] > key) {
                j--;
            }
            if (i < j) {
                System.out.printf("a[%d]=%d <- a[%d]=%d\n", i, a[i], j, a[j]);
                a[i++] = a[j];
            }

            while (i < j && a[i] < key) {
                i++;
            }
            if (i < j) {
                System.out.printf("a[%d]=%d -> a[%d]=%d\n", i, a[i], j, a[j]);
                a[j--] = a[i];
            }

        }
        a[i] = key;
        printArray(a);
        qsort(a, left, i - 1);
        qsort(a, i + 1, right);
    }

    public static void main(String[] args) {
        int a[] = { 3, 4, 5, 1, 2 };
        qsort(a, 0, a.length - 1);
    }

}

 

posted on 2017-07-11 23:44  talkwah  阅读(221)  评论(0编辑  收藏  举报