<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
普通選擇排序基本上運算不出來