快速排序算法Java

<p>快速排序排序相對於普通排序算法效率很高,特別是對於大數據優勢體現的相當明顯</p><p>下面是java程序</p><p><span style="BACKGROUND-COLOR: #ffffff">主程序:</span></p>
import java.util.*;
/**
 *
 * @author Acer
 */
public class Sort {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int size=10000000;//<span style="color:#ff0000;">千萬數據
</span>        long[] SJ=new long[size];
        Random random1 = new Random();//獲得隨機數
        JC jc=new JC();
        for(int i=0;i<size;i++)
        {
            SJ[i]=random1.nextInt();
           //System.out.println(random1.nextInt());
        }
        System.out.print("請輸入選擇:");
        int c;
        Scanner input =new Scanner(System.in);
        c=input.nextInt();
        switch(c)
        {
            case 1:   //普通排序算法     
                long startTime=System.currentTimeMillis();   //獲取開始時間
                SelectSort s1=new SelectSort();
                s1.Select(SJ, size);
                long endTime=System.currentTimeMillis(); //獲取結束時間
                System.out.println("普通排序運行時間: "+(endTime-startTime)+"ms");
                break;
            case 2: //快速排序算法
                startTime=System.currentTimeMillis();   //獲取開始時間
                QuickSort s2=new QuickSort();
                s2.Qsort(0,size-1,SJ);
                endTime=System.currentTimeMillis(); //獲取結束時間
                if(jc.PD(SJ,size))//判斷是否有序
                        System.out.println("快速排序運行時間: "+(endTime-startTime)+"ms");
                break;
        }
        // TODO code application logic here
    }

    
<p>}
</p>

QuickSort//快速排序

public class QuickSort {
    public int  Fdsort(int low,int high,long SJ[])
    {
       long s=SJ[low];
        long flag=SJ[low];
        while(low<high)
        {
            while(low<high && SJ[high]>=flag) --high;
            SJ[low]=SJ[high];
            while(low<high && SJ[low]<=flag) ++low;
            SJ[high]=SJ[low];
        }
        SJ[low]=flag;
        return low;
        
    }
    public void Qsort(int low,int high,long SJ[])
    {
        if(low<high)
        {
            int flag=Fdsort(low,high,SJ);
            Qsort(low,flag-1,SJ);
            Qsort(flag+1,high,SJ);
        }
    }
    
}


SelectSort//普通選擇排序

public class SelectSort {//選擇排序
    public void Select(long SJ[],int size){
        long t;
        for(int i=0;i<size;i++)
        {
            for(int j=i+1;j<size;j++)
            {
                if(SJ[i]>SJ[j])
                {
                    t=SJ[i];
                    SJ[i]=SJ[j];
                    SJ[j]=t;
                }
            }
        }
        
    }
}


 

public class JC {
    public boolean PD(long SJ[],int size){
        for(int i=1;i<size;i++){
            if(SJ[i-1]>SJ[i])
                return false;
        }
        return true;
    }
}


計算結果:(tool:notebeans)

請輸入選擇:2
快速排序運行時間: 1469ms
普通選擇排序基本上運算不出來

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章