add quicksort

This commit is contained in:
ranwenjie
2021-11-30 23:50:23 +08:00
parent 73a3097a6e
commit 0de0504b9d
2 changed files with 68 additions and 3 deletions
+38
View File
@@ -143,6 +143,44 @@ void quicksort(int *a, int left, int right){
```
```Java
// pivot 选择 尾部节点, 代码写起来更加简单; 移动元素更方便
static int partition(int[] nums, int left, int right){
int pivot = nums[right];//选尾部节点作为 pivot
int end = right;
right--;
while (left < right) {
if (nums[left] <= pivot) {
left ++ ;
continue;
}
//元素比 pivot 大,右边窗口变小
//swap left & right
swap(nums, left, right);
right--;
}
// 跟 pivot 元素置换
int i = 0;
if (nums[left] <= pivot) {
//swap left+1 & pivot
i = left +1;
} else {//swap left & pivot
i = left ;
}
swap(nums, i, end);
return i;
}
```
![](./qsort.gif)