- public class QuickSortByBruce {
- public static void main(String args[]){
- int data[]=new int[100001];
- Random r=new Random();
- System.out.println("Print the Array Befor Sorting");
- for(int i=1;i<=100000;i++){
- data[i]=r.nextInt(100000);
- System.out.print(data[i]+"-");
- if(i%20==0)System.out.println();
- }
- long t1=System.currentTimeMillis();
- QuickSort(data,1,data.length-1);
- long t2=System.currentTimeMillis();
- System.out.println("Finished~!!! Following is the Result : ");
- for(int i=1;i<=100000;i++){
- System.out.print(data[i]+"--");
- if(i%20==0)System.out.println();
- }
- System.out.println();
- System.out.println(t1);
- System.out.println(t2);
- }
- public static void QuickSort(int data[],int start,int end){
- int i=start,j=end,temp;
- int mid=data[(start+end)/2];
- while(i<=j){
- while(data[i]<mid)i++;
- while(data[j]>mid)j--;
- if(i<=j){
- temp=data[i];data[i]=data[j];data[j]=temp;i++;j--;
- }
- }
- if(start<j)QuickSort(data,start,j);
- if(end>i)QuickSort(data,i,end);
- }
- }
QuickSort好像要比其它的排序算法都要快...
procedure: 按下标先挑一个中间的值,然后将小于这个值的数放在左边,大于这个值的数放在右边,然后再进行递归....