快排 QuickSort:
d对于快排只需要记住:
1、有标记;
2、需要交换
3、递归
具体步骤:
数据中选做一个作为基准,选第一个;
定义两个指针分别在最左边和最右边,依次和基准比较,分别依次比较大小再交换数据操作,寻找后面数据,小于基准的数移到基准左边,大于它的放在右边;
对于基准左右两边的数进行上述的重复操作。(递归)
```handlebars
public class QS {
public static void main(String[] args) {
int[] arr = new int[]{1,5,3,4,-1,-3,9,-10};
System.out.println("排序前:"+Arrays.toString(arr));
sort(arr, 0, arr.length-1);
System.out.println("排序后:"+Arrays.toString(arr));
}
private static void sort(int[] arry ,int low,int high) {
if(low>=high) {
return;
}
//标记位
int i = low;
int j = high;
int target = arry[i];
while(i<j) {
//判断右边
while(arry[j]>=target&&i<j) {
j--;
}
int n;
n = arry[j];
arry[j] = arry[i];
arry[i] = n;
//判断左边
while(arry[i]<target&&i<j){
i++;
}
n = arry[j];
arry[j] = arry[i];
arry[i] = n;
}
//左右两边分别递归
sort(arry, low, i-1);
sort(arry, i+1, high);
}
}
只需要记住:标记、比较、递归就OK啦!