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。

  • 相关阅读:
    web api中允许跨域访问
    HTTP Error 500.19
    使用SQL语句时应该注意的一些问题
    关于EsayUI中datagrid重复提交后台查询数据的问题
    EF6中使用事务的方法
    jquery中常用的方法和注意点
    在EF中正确的使用事务
    css解决移动端1px边框问题
    判定 JS 数据类型的最佳解决方案
    将伪数组转化为真数组
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3621226.html
Copyright © 2011-2022 走看看