java排序算法

冒泡排序

(1)从第一个元素开始,比较两个相邻的元素。如果第一个比第二个大,那么进行交换。
(2)轮到下一组相邻元素,执行同样的操作,重复比较,直到没有相邻元素为止,此时最后的元素就是最大的元素。
(3)出列每次排序得到的最后一位元素,对剩余元素重复以上步骤,直到没有任何一对元素需要比较为止。

    public void bubbleSortOpt(int[] arr) {
        if(arr.length < 2) {
            return;
        }
        
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

快速排序

public static void quickSortOpt(int[] arr, int start, int end) {
        if (start < end) {
            int stand = arr[start];
            int low = start;
            int high = end;
            while (low < high) {
                while (low < high && arr[high] >= stand) {
                    high--;
                }

                while (low < high && arr[low] <= stand) {
                    low++;
                }

                int temp = arr[low];
                arr[low] = arr[high];
                arr[high] = temp;
            }

            arr[start] = arr[low];
            arr[low] = stand;
            quickSortOpt(arr, start, low);
            quickSortOpt(arr, low + 1, end);
        }
    }

插入排序

public static void insertSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < arr[i - 1]) {
                int j;
                int temp = arr[i];
                for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
                    arr[j + 1] = arr[j];
                }

                arr[j + 1] = temp;
            }
        }
    }

选择排序

public static void selectSort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            int min = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[min]) {
                    min = j;
                }
            }

            if (min != i) {
                int temp = arr[i];
                arr[i] = arr[min];
                arr[min] = temp;
            }
        }
    }

你可能感兴趣的:(java,排序算法,算法)