码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-10-23 10:37:27      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   sp   数据   div   问题   

快排实现基本思想:取个关键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);            
        }
    }

}

 

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

标签:style   blog   color   ar   for   sp   数据   div   问题   

原文地址:http://www.cnblogs.com/hardwork/p/4045153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!