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。

  • 相关阅读:
    深入了解CSS字体度量,行高和vertical-align
    解决ios手机上传竖拍照片旋转90度问题
    HTML5图片上传本地预览
    前端本地文件操作与上传
    前端基础进阶(一):内存空间详细图解
    js小知识-数组去重
    SQL Server物化视图学习笔记
    MindMaster学习笔记
    c#Lock学习笔记
    oauth2.0学习笔记(摘抄简化)
  • 原文地址:https://www.cnblogs.com/seven7seven/p/3621226.html
Copyright © 2011-2022 走看看