首页 > 代码库 > 数据结构排序问题-------快排

数据结构排序问题-------快排

快排实现基本思想:取个关键key值对整个序列进行比较,大的放一边,小的放另一边(这就分成两个序列了)。然后继续对两个序列(分开的)进行递归比较,最后实现整个序列的排序。

最坏情况的时间复杂度为O(n2),最好情况时间复杂度为O(nlog2n).

package com;    //快速排序public class quick {        //主函数实现排后的输出显示    public static void main(String[] args){        int[]a = {21,32,1,332,42,3,12,78,96,23};        Quick1(a,0,a.length-1);        for(int i=0;i<a.length;i++){            System.out.print(a[i]+" ");        }            }     //主体。。    public static int Quick(int[]a,int low,int high){                int key = a[low];    //挖坑,取数                while(low<high){            while(low<high && key <= a[high]){                --high;            }                a[low] = a[high];  //从后往前,比key小就往前移,                            while(low<high && key >= a[low]){                ++low;            }            a[high] = a[low];    //从前到后,比key大就往后移        }        a[low] = key;       //填坑        return low;            }    //递归调用,实现整体排序    public static void Quick1(int[]a,int low,int high){                int pivot;                if(low<high){                        pivot = Quick(a,low,high);                        Quick1(a,low,pivot-1);                        Quick1(a,pivot+1,high);                    }    }}

 

数据结构排序问题-------快排