public static void QuickSort(int[] arr,int low,int high){
int i,j,temp,t;
if(low>high){
return;
}
//相当于两个指针一个指头一个指尾
i=low;
j=high;
//temp就是基准位
temp = arr[low];
while (i<j) {
//先看右边,依次往左递减
while (temp<=arr[j]&&i<j) {
j--;
}
//再看左边,依次往右递增
while (temp>=arr[i]&&i<j) {
i++;
}
//如果满足条件则交换
if (i<j) {
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
//最后将基准为与i和j相等位置的数字交换
arr[low] = arr[i];
arr[i] = temp;
//递归调用左半数组
QuickSort(arr, low, j-1);
//递归调用右半数组
QuickSort(arr, j+1, high);
}
快速排序代码
最新推荐文章于 2024-01-02 14:03:12 发布