快速排序堪称最经典的排序,思想是选一个基准值,一般选第一个。然后所有的值与基准值比较,大的位置不变,
小的位置与第一个大的位置互换,就这样进行第一轮排序,然后对于基准值二边的再进行排序,依次类推,直到为剩一个。
下面是快排的代码:
public class QuickSort {
public void quickSort(int a[],int start,int end){
//比较这个数组是否只有一个值没有进行快速排序
if(start<end){
//基准值
int keyword=a[start];
int i=start;
for(int j=i+1;j<=end;j++){
//与基准值比较,大的位置不变,小的与第一个大的交换
if(a[j]<keyword){
int temp=a[j];
a[j]=a[i+1];
a[i+1]=temp;
i++;
}
}
a[start]=a[i];
a[i]=keyword;
//以此类推,递归的对所有的进行快排
quickSort(a, start, i-1);
quickSort(a, i+1, end);
}
}
public static void main(String[] args){
Random random=new Random();
int[] a=new int[10000];
for(int i=0;i<a.length;i++){
a[i]=random.nextInt(10000);
}
long startTime=System.currentTimeMillis();
QuickSort quickSort=new QuickSort();
quickSort.quickSort(a, 0, a.length-1);
long endTime=System.currentTimeMillis();
System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
//排序后的序列
System.out.println("排序后的序列:");
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
}
代码很简单,不多说了