快速排序

来源:互联网 发布:淘宝直播网址 编辑:程序博客网 时间:2024/06/03 22:01

选择排序:

思想:基于分治的思想,是冒泡排序的改进型,首先在数组选中一个基准点(选择第一个数为基准点),然后分别从数组的两端首尾,末尾扫描数组,设两个指示标志(和指针差不多的意思),一个指向起始位置low,另一个指向末尾位置high,首先从后半部分开始,如果发现有元素比基准点小,就交换low和high的位置的值,然后从前半部分开始扫描,发现元素大于基准点的值,就交换low和high的值,如此反复,知道low>=high

代码实现:

随机生成10000个数快速排序

public class QuickSort {


public static void main(String[] args) {
int[] arr =getRandomArray(10000,0,100000);
System.out.println(Arrays.toString(arr));
long time=System.nanoTime();//测试所用的时间
quickSort(arr, 0, arr.length-1);
System.out.println(System.nanoTime()-time);
System.out.println(Arrays.toString(arr));


}
public static int getMiddle(int[] array,int low,int high){
int temp=array[low];//数组第一个作为中轴
while(low<high){
while(low<high && array[high]>=temp){
high--;
}
array[low]=array[high];//比中轴小的记录移到低端
while(low<high && array[low]<=temp){
low++;
}
array[high]=array[low];//比中轴大的记录移到高端
}
array[low]=temp;
return low;
}
public static int[] quickSort(int[] array,int low,int high){
if(low<high){
int middle=getMiddle(array,low,high);
quickSort(array,low,middle-1);
quickSort(array,middle+1,high);
}
return array;

}
public static int[] getRandomArray(int len,int min,int max){
int[] array=new int[len];
for(int i=0;i<len;i++){
array[i]=(int)(Math.random()*(max-min)+min);
}
return array;
}


}



          


原创粉丝点击