快速排序需要递归方法
- 首先定义一个基准。
- 比基准大在一边,小的在另一边。
直接源码:
package 中级;
import java.util.Arrays;
public class kuaisu {
public static void main(String[] args) {
int [] date ={6 ,1, 2, 7, 9, 3, 4, 5, 10, 8};
System.out.println("排序前数组是:" + Arrays.toString(date));
quickly_sort(date,0,date.length-1);
System.out.println("排序后数组是:" + Arrays.toString(date));
}
public static void quickly_sort(int []date,int low , int high){
int i,j,temp,t; //i是最左边 j是最右边 t临时变量 temp基准点
if(low>high){ //必须要加这一句话 不然会弹出StackOverflowError的警告
return;
}
i=low; //最左边的索引
j=high; //最右边的索引
//temp就是基准位置
temp=date[low];
//开始总循环,i不能大于j,不然弹出StackOverflowError的警告
while (i < j){
//从右往左看依次递减
if (temp<=date[j] && i<j){
j--;
}
//从左网友看依次递增
if (temp>=date[i] && i<j){
i++;
}
//如果满足条件则交换
if (i<j){
t=date[j];
date[j] = date[i];
date[i] = t ;
}
}
//i,j相等跳出循环
date[low] = date[i];
date[i] = temp;
//递归调用左半数组
quickly_sort(date, low, j-1);
//递归调用右半数组
quickly_sort(date, j+1, high);
}
}
运行结果是: