DESKTOP-GLJFHBB_20200904-常虎科
一、问题陈述:
#### 如何理解快排思想?
快速排序是怎样进行交换排序的?
public static void quickSort(int []arr,int low,int high) {
//使用双指针
int i = low;
int j = high;
if(i>j) {
return;
}
int temp = arr[low];//将第一个值作为基准
while(i<j) {
while (i < j && temp <= arr[j]) {
j--;
}
while (i < j && temp >= arr[i]) {
i++;
}
if(i<j) {
arr[j]^=arr[i];
arr[i]^=arr[j];
arr[j]^=arr[i];
}
}
arr[low]=arr[i];
arr[i]=temp;
quickSort(arr, low,j-1);//基准值左侧下一次递归调用,这次循环high=j-1;
quickSort(arr, j+1, high); //基准值右侧下一次递归调用,这次循环high=j+1;
}
public static void main(String[] args) {
int [] arr = {3,4,7,2,6,8,5};
quickSort(arr, 0, arr.length-1);//调用quickSort方法,将low初始化为0,high初始化为
arr.length-1.
for(int s :arr)
System.out.println(s);
}
}
近期评论