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

Posted Andy 胡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java选择排序,插入排序,快速排序相关的知识,希望对你有一定的参考价值。

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选择排序,插入排序,快速排序的主要内容,如果未能解决你的问题,请参考以下文章

Java数据结构—排序算法

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序

JAVA实现经典排序算法(冒泡排序选择排序插入排序希尔排序堆排序归并排序快速排序)

请给出java几种排序方法

Java集合与数据结构 排序