zoukankan      html  css  js  c++  java
  • 快速排序java代码

    法一:

    //快速排序 通过测试
    public class QuickSortTest2 {
        public static void quickSort(int[] data,int low,int high){   //此处O(logn)
            int index;
            if(low<high) {
             index=partition(data,low,high);
                quickSort(data,low,index-1);         
                quickSort(data,index+1,high);  
            }
        } 
    
        public static int partition(int[] data, int i, int j) { // O(n)
                int k=data[i];
                while(i<j){
                    while(i<j&&data[j]>=k)
                        j--;
                    if(i<j)
                        data[i++]=data[j];
                    while(i<j&&data[i]<=k)
                        i++;
                    if(i<j)
                        data[j--]=data[i];
                }
                data[i]=k;
                return i;    
       } 
    //-----------------------------------------------------------------------------
        public static void main (String args[]){
            int x[]={9,8,7,6,5,4,3,2,1};
            quickSort(x,0,x.length-1);     
            for(int i=0;i<x.length;i++){
                System.out.println(x[i]);
            }
        }
    }

    法二:

    //快速排序 通过测试
    public class QuickSortTest_ali {
         void quickSort(int[] data,int length){   
            if(length<=1) return;
            int start=0;
            int end=length-1;
            int pivot=data[0];
            while(start<end){
                for(;start<end;end--){
                    if(data[end]<pivot){
                        data[start++]=data[end];
                        break;
                    }
                }
                for(;start<end;start++){
                    if(data[start]>pivot){
                        data[end--]=data[start];
                        break;
                    }
                }
            }
            data[start]=pivot;
            quickSort(data,start);
            quickSort(data+start+1,length-start-1); 
        } 
    //-----------------------------------------------------------------------------
        public static void main (String args[]){
            int x[]={9,8,7,6,5,4,3,2,1};
            quickSort(data,0,data.length-1);
            for(int i=0;i<x.length;i++){
                System.out.println(x[i]);
            }
        }
    }

     时间复杂度:最好的情况和平均情况都是nlogn,最坏情况是n^2。

  • 相关阅读:
    EBS_FORM_开发:关于离开record验证
    EBS_FORM_开发:关于WHEN-VALIDATE-ITEM上面commit
    EBS_FORM_开发:关于LOCK-ON
    EBS_FORM_开发:实现form record ctrl+F6复制
    EBS_FORM_开发:关于切换不同BLOCK的时候弹出需要保存的窗口
    EBS_FORM_开发:FRM-40150的解决思路
    工作记录
    02_mysql表的操作
    Mysql_字符集_排序规则
    JAVA_IO
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3621226.html
Copyright © 2011-2022 走看看