排序之快速排序
Posted youzoulalala
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序之快速排序相关的知识,希望对你有一定的参考价值。
package QuickSort; import MergeSort.MegerSort; import chooseSort.Example; /** * 快速排序 * 思想:分而治之; * 不断地以第一个元素为基准对当前数组进行分割,直到子数组只有一个元素 */ public class QuickSort extends Example public void sort(Comparable[] a, int lo,int hi) if (lo>=hi) return; int j = partition(a,lo,hi); //原地切分 sort(a,lo,j-1); sort(a,j+1,hi); private int partition(Comparable[] a, int lo, int hi) int i = lo; int j = hi+1; //note Comparable v = a[lo];//基准数 while (true) //i指向数组范围内比基准数大的值,或者数组最后一个元素 //j指向数组范围内比基准数小的值,或者数组第一个元素 while (less(a[++i],v)) if(i==hi) break; while (less(v,a[--j])) if(j==lo) break; //判断 if(i>=j) break; //交换 exch(a,i,j); exch(a,lo,j); return j; /** * 测试用例 * @param args */ public static void main(String[] args) Integer[] a = new Integer[]1,6,34,2,5,3,4,45,6,22; QuickSort sort = new QuickSort(); // sort.merge(a,0,2,a.length-1); sort.sort(a,0,a.length-1); show(a); System.out.println(isSorted(a));
以上是关于排序之快速排序的主要内容,如果未能解决你的问题,请参考以下文章