快速排序

切分:

切分

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+", ");
        }
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据结构与算法——快速排序 快速排序,顾名思义,它速度很快,针对一般应用中各种不同的输入都要比其他排序算法快很多,...
    sunhaiyu阅读 8,632评论 0 3
  • 算法简介 是一种分治的排序算法,特点就是快,而且效率高。 基本思路 通过一趟排序将待排元素分隔成独立的两部分,其中...
    TinyDolphin阅读 8,855评论 0 3
  • 快速排序 优点:原地排序(只需要很小的辅助栈)时间复杂度:NLgN 缺点:非常脆弱。有无数例子证明许多错误能致使它...
    melouverrr阅读 3,698评论 0 0
  • 1. 简介 快速排序是由C.A.R.Hoare在1960年发明的。快速排序可能是应用最广泛的排序算法了,快速排序的...
    谢朴欢阅读 8,612评论 0 3
  • 大多数人都在从一个手心向上到手心向下的过程,是的,我们先要学会做自己,让自己强大之后,自己能让自己过的很好之后,才...
    Yoga笑笑阅读 968评论 0 0