2021-01-21 常见排序算法,快排,归并,插入排序

//快排

package com.example.demo;

import java.util.Arrays;
/**
 * @author zhangjt
 * @date 2021-01-20
 * @Description:
 */
public class QuickSort {

    public static void main(String[] args) {
        int[] ints = {9, 8, 7, 6, 5, 4, 3, 2, 1, 100};
        mySort(ints, 0, ints.length - 1);
        System.out.println(Arrays.toString(ints));
    }

    private static void mySort(int[] ints, int left, int right) {

        if (left >= right) return;
        //先排序获取中点
        int mid = mySortSwap(ints, left, right);
        //排序左边数据
        mySort(ints, left, mid);
        //排序右边数据
        mySort(ints, mid + 1, right);
    }

    private static int mySortSwap(int[] ints, int left, int right) {

        int value = ints[left];
        while (right > left) {
            while (right > left && ints[right] >= value) {
                right--;
            }
            ints[left] = ints[right];
            while (right > left && value > ints[left]) {
                left++;
            }
            ints[right] = ints[left];
        }

        ints[left] = value;
        return left;
    }
}
package com.example.demo;

import java.util.Arrays;

/**
 * @author zhangjt
 * @date 2021-01-20
 * @Description:
 */
public class GBSort {
    public static void main(String[] args) {
        int[] array = {9, 8, 7, 6, 5, 4, 3, 2, 1, 100};

        gbSort(array, 0, array.length - 1);
        System.out.println(Arrays.toString(array));
    }

    private static void gbSort(int[] array, int left, int right) {
        if (left >= right) return;
        int mid = (left + right) / 2;
        //先分组
        gbSort(array, left, mid);
        gbSort(array, mid + 1, right);
        //再排序
        gbSortSwap(array, left, right);
    }

    private static void gbSortSwap(int[] array, int left, int right) {

        int mid = (left + right) / 2;
        int midR = mid + 1;
        int l = left;
        int[] tmp = new int[right - left + 1];
        int index = 0;
        while (left <= mid && midR <= right) {
            tmp[index++] = array[left] > array[midR] ? array[midR++] : array[left++];
        }
        while (left <= mid) {
            tmp[index++] = array[left++];
        }
        while (midR <= right) {
            tmp[index++] = array[midR++];
        }
        for (int i = 0; i < index; i++) {
            array[l++] = tmp[i];
        }
    }
}
package com.example.demo;

import java.util.Arrays;

/**
 * @author zhangjt
 * @date 2021-01-21
 * @Description:
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] array = new int[]{9, 8, 3, 5, 6, -1, 100};


        for (int i = 1; i < array.length; i++) {
            int v = array[i];
            int j = i - 1;
            for (; j >= 0; j--) {
                if (v < array[j]) {
                    array[j + 1] = array[j];
                } else {
                    break;
                }
            }
            array[j + 1] = v;
        }

        System.out.println(Arrays.toString(array));
    }
}

猜你喜欢

转载自blog.csdn.net/caihongmeimeis/article/details/112903347