快速排序
快速排序的思想就是先定义第一个元素为基准数,左右指针分别向右向左移动,直到右指针找到一个元素比基准数小,并且左指针找到一个元素比基准数大,此时交换左右指针当前指向的元素。继续移动,直到左指针与右指针重合,此时将基准数与指针重合的元素交换。如此,第一轮排序结束。再以排序好的这个数为分界线,分为左右两边数组元素,再分别以此方法递归。
代码
public class QuickSort {
public void quickSort(int[] list,int low,int high){
if(low > high){
return;
}
int i = low;
int j = high;
//定义基准位
int swap = list[low];
while (i < j){
//先看右边
while (swap <= list[j] && i < j){
j--;
}
//再看左边
while (swap >= list[i] && i < j){
i++;
}
//如果满足交换条件
if(i < j){
int temp = list[j];
list[j] = list[i];
list[i] = temp;
}
}
//当i,j相等时,用基准数与这个数交换
list[low] = list[i];
list[i] = swap;
//递归调用左半数组
quickSort(list,low,i-1);
//递归调用右半数组
quickSort(list,i+1,high);
}
}