快速排序(java实现)

来源:互联网 发布:excel两个表格数据对比 编辑:程序博客网 时间:2024/06/05 06:50

1.基本概念

快速排序是比较常用的一种排序方式。其时间复杂度为:平均时间O(nlogn),最坏情况O(n^2)。 稳定性:不稳定的排序方法。


2.基本思想

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。


3.代码

public class quickOrder {    //输出    public static void print(int array[]){        for(int i=0;i<array.length;i++){            if(i!=array.length-1){                  System.out.print(array[i]+",");            }else {                System.out.println(array[i]);            }        }    }        //排序        public static void order(int array[],int left,int right){            int high=right;            int low=left;            //一般将数组中的第一个元素作为key值            int key=array[low];            //排序之前判断数组中最小元素的下标的是否小于最大元素的下标,若不成立,则递归结束            if(low<high){                       //每次一趟快排结束标志                while(low<high){                    //从右向左寻找比目标值小的元素                    while(low<high &&  array[high]>key){                        high--;                    }                    array[low]=array[high];                    //从左向右寻找比目标值大的元素                    while(low<high  &&  array[low]<key){                        low++;                    }                    array[high]=array[low];                }                array[low]=key;                //一次结束后将其分为两部分,继续排序                order(array, left, low-1);//左边                order(array, low+1, right);//右边            }        }    public static void main(String[] args) {        // TODO Auto-generated method stub        int a[]=new int[]{24,15,36,45,5,89,42,31,62,51,99,1,102,85};        //初始顺序        quickOrder.print(a);        //进行排序        order(a, 0, a.length-1);        //排序后顺序        quickOrder.print(a);    }}

4.备注

有问题的地方还请各位多多包含,不吝赐教。

0 0
原创粉丝点击