快速排序

字数 3阅读 20

切分:

切分

public class QuickSort {

    private static int partition(int[] a, int l, int h) {
        int i = l;
        int j = h + 1;
        int k = a[l];
        while (true) {
            while (k > a[++i]) {
                if (i == h) break;
            }
            while (k < a[--j]) {
                if (j == l) break;
            }
            if (i >= j) break;

            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }
        a[l] = a[j];
        a[j] = k;
        return j;
    }


    private static void quickSort(int[] a,int l,int h){
        if(l>= h) return;
        int p = partition(a,l,h);
        quickSort(a,l,p-1);
        quickSort(a,p+1,h);
    }

    public static void main(String[] args){
        int[] a = {3,43,70,97,98,7,545,8,6,78,1,20,98,6,76};
        quickSort(a,0,a.length-1);
        for(int i:a){
            System.out.print(i+", ");
        }
    }

}

推荐阅读更多精彩内容

  • 数据结构与算法——快速排序 快速排序,顾名思义,它速度很快,针对一般应用中各种不同的输入都要比其他排序算法快很多,...
  • 算法简介 是一种分治的排序算法,特点就是快,而且效率高。 基本思路 通过一趟排序将待排元素分隔成独立的两部分,其中...
  • 快速排序 优点:原地排序(只需要很小的辅助栈)时间复杂度:NLgN 缺点:非常脆弱。有无数例子证明许多错误能致使它...
  • 算法介绍   快速排序是一种分治的排序算法。排序逻辑为:先挑一个元素来切分数组,最终让该元素的左侧都小于该元素,右...
  • 1. 简介 快速排序是由C.A.R.Hoare在1960年发明的。快速排序可能是应用最广泛的排序算法了,快速排序的...