常用算法

2019-07-30-基础排序算法:重点 快排、归并排序、堆排序

2019-08-04  本文已影响0人  王元

常见的排序算法总结

1,冒泡排序

java代码示例(正序):

public static void bubbleSort(int[] arr) {
    final int len = arr == null ? 0 : arr.length;
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len; j++) {
            int temp;
            if(arr[i] < arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            } else {
                continue;
            }
        }
    }
}

2,快速排序

java代码示例(正序):

public static void main(String[] args) {
    // write your code here
    int[] arr = {4, 2, 0, 5, 8, 9, 3, 5, 4};
    final int len = arr.length;
    quickSort(arr, 0, len - 1);
    for (int i = 0; i < len - 1; i++) {
    System.out.println(arr[i]);
    }
}

// Sort a list of numbers in an array within [start, end]
public static void quickSort(int[] arr, int low, int high) {
    if(low < high) {
        int povit = partition(arr, low, high);
        quickSort(arr, low, povit - 1);
        quickSort(arr, povit + 1, high);
    }
}

// Select A[end] as the pivot, separate the array into two parts.
private static int partition(int[] A, int start, int end) {
    int pivot = A[end];
    int i = start;
    for (int j = start; j < end; ++j) {
        if (A[j] <= pivot) {
            int tmp = A[i];
            A[i] = A[j];
            A[j] = tmp;
            ++i;
        }
    }

    A[end] = A[i];
    A[i] = pivot;
    return i;
}

3,简单选择排序:

java代码示例(正序):

public static void simpleSort(int[] arr) {
    final int len = arr == null ? 0 : arr.length;
    for (int i = 0; i < len; ++i) {
        int max = getMax(arr, i);//获取最大的元素
        if(max != i) {
            int temp = arr[i];
            arr[i] = arr[max];
            arr[max] = temp;
        }
    }
}

public static int getMax(int[] arr, int start) {
    final int len = arr == null ? 0 : arr.length;
    int k = start;
    for (int i = start; i < len; i++) {
        if(arr[k] < arr[i]) {
            k = i;
        }
    }
    return k;
}
上一篇 下一篇

猜你喜欢

热点阅读