add quicksort
This commit is contained in:
@@ -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;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
Reference in New Issue
Block a user