原理:
每次排序的时候设置一个基准数,把小于基准数的数放在基准数的左边,大于基准数的放在基准数的右边
过程:
对下面8个数进行快速排序
(1)设基准数为6,i指向最左边,j指向最右边
(2)j先向左移,i向右移,1和9换位置
(3)重复上述操作,直到i和j相遇,第一轮比较结束,0和6换位置
(4)对基准数6左右两边的数重复第一轮的操作
实现代码:
public class QuickSortTest {
void QuickSort(int arr[], int begin, int end){
if(begin>end){
return;
}
int i = begin;
int j = end;
int key = arr[begin];
while(i!=j){
//左边取大,右边取小
while (arr[i]>=key&&i<j){
i++;
}
while (arr[j]<=key&&j>i){
j--;
}
if(i<j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
arr[begin] = key;
key = arr[i];
QuickSort(arr,begin,key-1);
QuickSort(arr,key+1,end);
}
}