MCPcopy Create free account
hub / github.com/QMHTMY/RustBook / partition

Function partition

publication/code/chapter07/quick_sort.rs:16–40  ·  view source on GitHub ↗

计算分割点

(nums: &mut [i32], low: usize, high: usize)

Source from the content-addressed store, hash-verified

14
15// 计算分割点
16fn partition(nums: &mut [i32], low: usize, high: usize) -> usize {
17 let mut lm = low; // 左标记
18 let mut rm = high; // 右标记
19
20 loop {
21 // 左标记不断右移
22 while lm <= rm && nums[lm] <= nums[low] {
23 lm += 1;
24 }
25 // 右标记不断左移
26 while lm <= rm && nums[low] <= nums[rm] {
27 rm -= 1;
28 }
29
30 // 左标记越过右标记时退出并交换左右标记数据
31 if lm > rm {
32 break;
33 } else {
34 nums.swap(lm, rm);
35 }
36 }
37 nums.swap(low, rm);
38
39 rm
40}
41
42// 分割点不单独计算的快速排序,lm 和 rm 作分割点
43fn quick_sort2(nums: &mut [i32], low: usize, high: usize) {

Callers 1

quick_sort1Function · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected