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

快速排序(Java)

作者: PC_Repair | 来源:发表于2019-03-09 11:35 被阅读11次

基于分治

在待排序表 L[1...n] 中任取一个元素 pivot 作为基准,通过一趟排序将待排序表划分为独立的两部分 L[1...k-1] 和 L[k+1...n],使得 L[1...k-1] 中所以的元素小于 pivot, L[k+1...n] 中所以元素大于或等于 pivot,则 pivot 放在了其最终的位置 L(k) 上, 这个过程称作一趟快排。递归直至每部分内只有一个元素或空为止。

public class QuickSort {

    public static void main(String[] args) {
        int[] arr = {2, 12, 16, 16, 88, 5, 10};
        quickSort(arr, 0, arr.length-1);
        //quickSort2(a);
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }

    private static void quickSort(int[] arr, int low, int high) {
        if (low < high) {  // 递归跳出的条件
            // Partition() 就是划分操作,将表 A[low...high] 划分为满足上述条件的两个子表
            int pivotpos = partition(arr, low, high); // 划分
            quickSort(arr, low, pivotpos-1); // 依次对两个子表进行递归排序
            quickSort(arr, pivotpos+1, high);
        }
    }

    private static int partition(int[] arr, int low, int high) {
        int pivot = arr[low];     // 将当前表中的第一个元素设为枢轴值,对表进行划分
        while (low < high) {      // 循环跳出条件
            while (low < high && arr[high] >= pivot) {
                --high;
            }
            arr[low] = arr[high]; // 将比枢轴值小的元素移动到左端
            while (low < high && arr[low] <= pivot) {
                ++low;
            }
            arr[high] = arr[low]; // 将比枢轴值大的元素移动到右端
        }
        arr[low] = pivot;         // 枢轴元素存放到最终位置
        return low;               // 返回存放枢轴的最终位置
    }
}

相关文章

  • 快速排序

    快速排序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/vllspqtx.html