美文网首页
快速排序(java)

快速排序(java)

作者: castlet | 来源:发表于2020-05-01 16:33 被阅读0次

通过一趟排序将待排序的记录分割为独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两个记录继续进行排序,以达到整个序列有序的目的。时间复杂度为O(nlogn),为不稳定的排序算法。

代码

void quitSort(int[] arr) {
    if (arr == null || arr.length <= 0) {
        return;
    }
    quitSort(arr, 0, arr.length - 1);
}

void quitSort(int[] arr, int start, int end) {
    if (start < end) {
        int pivot = partation(arr, start, end); // 算出中间值
        quitSort(arr, start, pivot);            // 对左侧序列进行递归排序
        quitSort(arr, pivot + 1, end);     // 对右侧序列进行递归排序
    }
}

int partation(int[] arr, int start, int end){
    // 三数取中,通过交换保证arr[start] 是中间值,这样比较合理
    int middle = start + (end - start) / 2;
    if (arr[start] > arr[end]) {
        swap(arr, start, end);
    }
    if (arr[middle] > arr[end]) {
        swap(arr, middle, end);
    }
    if (arr[start] > arr[middle]) {
        swap(arr, start, middle);
    }
    int tmp = arr[start];
    while (start < end) {
        while (start < end && arr[end] > tmp) {
            end --;
        }
        arr[start] = arr[end];
        while (start < end && arr[start] <= tmp) {
            start ++;
        }
        arr[end] = arr[start];
    }
    arr[start] = tmp;
    return start;
}

相关文章

  • 快速排序

    快速排序Java实现

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • 面试知识点

    排序冒泡排序快速排序选择排序插入排序二路归并 查找二分查找 排序和查找的java实现 java语言Java字符串字...

  • 快速排序

    手写java版快速排序算法实现

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • 排序

    Java 排序(这里统一做从小到大排) 快速排序 · 快速排序用分而治之的思想。对于要排序的数据,选取最左边的...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 常用排序算法的Java实现

    冒泡、插入、选择、归并、快速排序的Java实现

  • 排序算法Java实现

    本文会通过Java语言实现:冒泡排序,插入排序,选择排序,归并排序,快速排序,桶排序,计数排序,基数排序,希尔排序...

网友评论

      本文标题:快速排序(java)

      本文链接:https://www.haomeiwen.com/subject/bfyqghtx.html