数据算法之快速排序(quickSort)的Java实现

  本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
  快速排序的基本思想是通过一个枢轴,将比枢轴小的数排在枢轴左边,将比枢轴大的数字排在枢轴右边,然后再对两边分别快速排序。


  如图所示
数据算法之快速排序(quickSort)的Java实现_第1张图片


输入:数据元素数组r,划分序列区间[low..high]
输出:将序列划分为两个子序列并返回枢轴元素的位置

private int partition(Object[] r, int low, int high){
    Object pivot = r[low]; //使用r[low]作为枢轴元素
    while (low//从两端交替向内扫描
        while(low=0) high--;
        r[low] = r[high]; //将比pivot 小的元素移向低端
        while(low0) low++;
        r[high] = r[low]; //将比pivot 大的元素移向高端
    }
    r[low] = pivot; //设置枢轴
    return low; //返回枢轴元素位置
}

输入:数据元素数组r,数组r 的待排序区间[low..high]
输出:数组r 以关键字有序

public void quickSort(Object[] r, int low, int high){
    if (lowint pa = partition(r,low,high);
        quickSort(r,low,pa-1);
        quickSort(r,pa+1,high);
    }
}

你可能感兴趣的:(数据算法之快速排序(quickSort)的Java实现)