快速排序是对冒泡排序的改进
原理:在n个待排序的元素中,取一个轴点,经过一趟排序之后,把比较小的元素全部排到轴点的前面,比较大的元素全部排到轴点的后面,结果将待排序元素分成两个子表,最后将轴点放置在分解出,分别对其左右子表重复之前过程,直至每个子表只有一个记录时排序完成。
public class QuickSort{
public static void quickSort(int[] arr, int left, int right){
// 划分
int mid = partion(arr, left, right);
// 左队列排序
quickSort(arr, 0, mid - 1);
// 右队列排序
quickSort(arr, mid - 1, right);
}
public void swap(int [] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public void partion(int[] arr, int left, int right){
// 轴值默认选取数组的第一个数组
while(left < right){
while(left < right && arr[left] <= arr[right]){
right--;
}
if(left < right){
swap(arr, left, right);
}
while(left < right && arr[left] <= arr[right]){
left++;
}
if(left < right){
swap(arr, left, right);
}
}
return left;
}
}