文档章节

Java实现快速排序算法

IT-Mamba
 IT-Mamba
发布于 2018/08/12 12:48
字数 310
阅读 20
收藏 0

快速排序一般以第一个数为基准,然后将大于基准的数放到右边,小于基准的数放到左边。递归直到全部排好为止。

package sort;

public class QuickSort {
    public static void main(String[] args) {
        int[] array = {6,2,7,3,8,1,9};
        System.out.println("起始时间:"+System.currentTimeMillis());
        quickSort(array);
        System.out.println("结束时间:"+System.currentTimeMillis());
        System.out.println("after quick sort");
        for(int i=0;i<array.length;i++) {
            System.out.print(array[i]+"  ");
        }

    }
    public static void quickSort(int[] a) {
        if(a.length>0) {
            quickSort(a, 0 , a.length-1);
        }
    }

    private static void quickSort(int[] a, int low, int high) {
        if( low > high) {  //递归算法的出口
            return;
        }
        int i = low;
        int j = high;
        int key = a[ low ];
        while( i< j) {   //完成一趟排序
            while(i<j && a[j] > key){  //从右往左找到第一个小于key的数
                j--;
            }
            while( i<j && a[i] <= key) {  //从左往右找到第一个大于key的数
                i++;
            }
            if(i<j) { //交换两个数位置
                int p = a[i];
                a[i] = a[j];
                a[j] = p;
            }
        }
        int p = a[i];   //调整key的位置
        a[i] = a[low];
        a[low] = p;
        quickSort(a, low, i-1 );  //key左边的数
        quickSort(a, i+1, high);   //key右边的数
    }
}

 

© 著作权归作者所有

IT-Mamba
粉丝 10
博文 133
码字总数 56017
作品 0
惠州
程序员
私信 提问
算法设计:两种快速排序代码实现

快速排序是一种高效且使用广泛的排序算法,在很多语言的标准库中自带的排序都是快速排序,所以我们也有必要了解快排的原理以及其实现方法。 快排的大致思想 快速排序实现的重点在于数组的拆分...

Sunrise_1018
2018/11/23
0
0
可视化的数据结构和算法

还记得之前发布过的那个关于可视化排序的文章吗?在网上又看到了一个旧金山大学David Galles做的各种可视化的数据结构和基本算法的主页,网址在这里,大家可以看看。我把这个页面的目录列在下...

戴威
2011/05/12
1K
5
JAVA中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用遍历数组进...

IceRainYWC
2014/03/17
29
0
JAVA中运用数组的四种排序方法

JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用遍历数组进...

闫三
2012/05/08
64
0
java 通配符的应用— java 排序算法

这几天无聊,又重新学起java的排序算法,为DualPivotQuickSort做准备。为了更好地适应各种情况,我们选择使用通用类型T和通配符的上下界来实现,同时这次谈的是对数组对象的排序。如果你对j...

天地一MADAO_
2014/03/02
117
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部