Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions codes/c/chapter_sorting/quick_sort.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ void quickSortMedian(int nums[], int left, int right) {
quickSortMedian(nums, pivot + 1, right);
}

// 以下为尾递归优化的快速排序
// 以下为递归深度优化的快速排序

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
void quickSortTailCall(int nums[], int left, int right) {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -127,10 +127,10 @@ int main() {
printf("快速排序(中位基准数优化)完成后 nums = ");
printArray(nums1, size);

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
int nums2[] = {2, 4, 1, 0, 3, 5};
quickSortTailCall(nums2, 0, size - 1);
printf("快速排序(尾递归优化)完成后 nums = ");
printf("快速排序(递归深度优化)完成后 nums = ");
printArray(nums1, size);

return 0;
Expand Down
8 changes: 4 additions & 4 deletions codes/cpp/chapter_sorting/quick_sort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ class QuickSortMedian {
}
};

/* 快速排序类(尾递归优化) */
/* 快速排序类(递归深度优化) */
class QuickSortTailCall {
private:
/* 哨兵划分 */
Expand All @@ -103,7 +103,7 @@ class QuickSortTailCall {
}

public:
/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
static void quickSort(vector<int> &nums, int left, int right) {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -135,10 +135,10 @@ int main() {
cout << "快速排序(中位基准数优化)完成后 nums = ";
printVector(nums1);

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
vector<int> nums2 = {2, 4, 1, 0, 3, 5};
QuickSortTailCall::quickSort(nums2, 0, nums2.size() - 1);
cout << "快速排序(尾递归优化)完成后 nums = ";
cout << "快速排序(递归深度优化)完成后 nums = ";
printVector(nums2);

return 0;
Expand Down
8 changes: 4 additions & 4 deletions codes/csharp/chapter_sorting/quick_sort.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public static void QuickSort(int[] nums, int left, int right) {
}
}

/* 快速排序类(尾递归优化) */
/* 快速排序类(递归深度优化) */
class QuickSortTailCall {
/* 元素交换 */
static void Swap(int[] nums, int i, int j) {
Expand All @@ -111,7 +111,7 @@ static int Partition(int[] nums, int left, int right) {
return i; // 返回基准数的索引
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
public static void QuickSort(int[] nums, int left, int right) {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -142,9 +142,9 @@ public void Test() {
QuickSortMedian.QuickSort(nums1, 0, nums1.Length - 1);
Console.WriteLine("快速排序(中位基准数优化)完成后 nums1 = " + string.Join(",", nums1));

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
int[] nums2 = [2, 4, 1, 0, 3, 5];
QuickSortTailCall.QuickSort(nums2, 0, nums2.Length - 1);
Console.WriteLine("快速排序(尾递归优化)完成后 nums2 = " + string.Join(",", nums2));
Console.WriteLine("快速排序(递归深度优化)完成后 nums2 = " + string.Join(",", nums2));
}
}
8 changes: 4 additions & 4 deletions codes/dart/chapter_sorting/quick_sort.dart
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class QuickSortMedian {
}
}

/* 快速排序类(尾递归优化) */
/* 快速排序类(递归深度优化) */
class QuickSortTailCall {
/* 元素交换 */
static void _swap(List<int> nums, int i, int j) {
Expand All @@ -108,7 +108,7 @@ class QuickSortTailCall {
return i; // 返回基准数的索引
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
static void quickSort(List<int> nums, int left, int right) {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -138,8 +138,8 @@ void main() {
QuickSortMedian.quickSort(nums1, 0, nums1.length - 1);
print("快速排序(中位基准数优化)完成后 nums1 = $nums1");

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
List<int> nums2 = [2, 4, 1, 0, 3, 5];
QuickSortTailCall.quickSort(nums2, 0, nums2.length - 1);
print("快速排序(尾递归优化)完成后 nums2 = $nums2");
print("快速排序(递归深度优化)完成后 nums2 = $nums2");
}
4 changes: 2 additions & 2 deletions codes/go/chapter_sorting/quick_sort.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ type quickSort struct{}
// 快速排序(中位基准数优化)
type quickSortMedian struct{}

// 快速排序(尾递归优化
// 快速排序(递归深度优化
type quickSortTailCall struct{}

/* 哨兵划分 */
Expand Down Expand Up @@ -112,7 +112,7 @@ func (q *quickSortTailCall) partition(nums []int, left, right int) int {
return i // 返回基准数的索引
}

/* 快速排序(尾递归优化)*/
/* 快速排序(递归深度优化)*/
func (q *quickSortTailCall) quickSort(nums []int, left, right int) {
// 子数组长度为 1 时终止
for left < right {
Expand Down
4 changes: 2 additions & 2 deletions codes/go/chapter_sorting/quick_sort_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ func TestQuickSortMedian(t *testing.T) {
fmt.Println("快速排序(中位基准数优化)完成后 nums = ", nums)
}

// 快速排序(尾递归优化
// 快速排序(递归深度优化
func TestQuickSortTailCall(t *testing.T) {
q := quickSortTailCall{}
nums := []int{4, 1, 3, 1, 5, 2}
q.quickSort(nums, 0, len(nums)-1)
fmt.Println("快速排序(尾递归优化)完成后 nums = ", nums)
fmt.Println("快速排序(递归深度优化)完成后 nums = ", nums)
}
8 changes: 4 additions & 4 deletions codes/java/chapter_sorting/quick_sort.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public static void quickSort(int[] nums, int left, int right) {
}
}

/* 快速排序类(尾递归优化) */
/* 快速排序类(递归深度优化) */
class QuickSortTailCall {
/* 元素交换 */
static void swap(int[] nums, int i, int j) {
Expand All @@ -120,7 +120,7 @@ static int partition(int[] nums, int left, int right) {
return i; // 返回基准数的索引
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
public static void quickSort(int[] nums, int left, int right) {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -150,9 +150,9 @@ public static void main(String[] args) {
QuickSortMedian.quickSort(nums1, 0, nums1.length - 1);
System.out.println("快速排序(中位基准数优化)完成后 nums1 = " + Arrays.toString(nums1));

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
int[] nums2 = { 2, 4, 1, 0, 3, 5 };
QuickSortTailCall.quickSort(nums2, 0, nums2.length - 1);
System.out.println("快速排序(尾递归优化)完成后 nums2 = " + Arrays.toString(nums2));
System.out.println("快速排序(递归深度优化)完成后 nums2 = " + Arrays.toString(nums2));
}
}
8 changes: 4 additions & 4 deletions codes/javascript/chapter_sorting/quick_sort.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class QuickSortMedian {
}
}

/* 快速排序类(尾递归优化) */
/* 快速排序类(递归深度优化) */
class QuickSortTailCall {
/* 元素交换 */
swap(nums, i, j) {
Expand All @@ -123,7 +123,7 @@ class QuickSortTailCall {
return i; // 返回基准数的索引
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
quickSort(nums, left, right) {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -154,8 +154,8 @@ const quickSortMedian = new QuickSortMedian();
quickSortMedian.quickSort(nums1, 0, nums1.length - 1);
console.log('快速排序(中位基准数优化)完成后 nums =', nums1);

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
const nums2 = [2, 4, 1, 0, 3, 5];
const quickSortTailCall = new QuickSortTailCall();
quickSortTailCall.quickSort(nums2, 0, nums2.length - 1);
console.log('快速排序(尾递归优化)完成后 nums =', nums2);
console.log('快速排序(递归深度优化)完成后 nums =', nums2);
6 changes: 3 additions & 3 deletions codes/kotlin/chapter_sorting/quick_sort.kt
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ fun quickSortMedian(nums: IntArray, left: Int, right: Int) {
quickSort(nums, pivot + 1, right)
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
fun quickSortTailCall(nums: IntArray, left: Int, right: Int) {
// 子数组长度为 1 时终止
var l = left
Expand Down Expand Up @@ -114,8 +114,8 @@ fun main() {
quickSortMedian(nums1, 0, nums1.size - 1)
println("快速排序(中位基准数优化)完成后 nums1 = ${nums1.contentToString()}")

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
val nums2 = intArrayOf(2, 4, 1, 0, 3, 5)
quickSortTailCall(nums2, 0, nums2.size - 1)
println("快速排序(尾递归优化)完成后 nums2 = ${nums2.contentToString()}")
println("快速排序(递归深度优化)完成后 nums2 = ${nums2.contentToString()}")
}
8 changes: 4 additions & 4 deletions codes/python/chapter_sorting/quick_sort.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def quick_sort(self, nums: list[int], left: int, right: int):


class QuickSortTailCall:
"""快速排序类(尾递归优化)"""
"""快速排序类(递归深度优化)"""

def partition(self, nums: list[int], left: int, right: int) -> int:
"""哨兵划分"""
Expand All @@ -97,7 +97,7 @@ def partition(self, nums: list[int], left: int, right: int) -> int:
return i # 返回基准数的索引

def quick_sort(self, nums: list[int], left: int, right: int):
"""快速排序(尾递归优化)"""
"""快速排序(递归深度优化)"""
# 子数组长度为 1 时终止
while left < right:
# 哨兵划分操作
Expand All @@ -123,7 +123,7 @@ def quick_sort(self, nums: list[int], left: int, right: int):
QuickSortMedian().quick_sort(nums1, 0, len(nums1) - 1)
print("快速排序(中位基准数优化)完成后 nums =", nums1)

# 快速排序(尾递归优化
# 快速排序(递归深度优化
nums2 = [2, 4, 1, 0, 3, 5]
QuickSortTailCall().quick_sort(nums2, 0, len(nums2) - 1)
print("快速排序(尾递归优化)完成后 nums =", nums2)
print("快速排序(递归深度优化)完成后 nums =", nums2)
8 changes: 4 additions & 4 deletions codes/ruby/chapter_sorting/quick_sort.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def quick_sort(nums, left, right)
end
end

### 快速排序类(尾递归优化)###
### 快速排序类(递归深度优化)###
class QuickSortTailCall
class << self
### 哨兵划分 ###
Expand All @@ -115,7 +115,7 @@ def partition(nums, left, right)
i # 返回基准数的索引
end

### 快速排序(尾递归优化)###
### 快速排序(递归深度优化)###
def quick_sort(nums, left, right)
# 子数组长度不为 1 时递归
while left < right
Expand Down Expand Up @@ -146,8 +146,8 @@ def quick_sort(nums, left, right)
QuickSortMedian.quick_sort(nums1, 0, nums1.length - 1)
puts "快速排序(中位基准数优化)完成后 nums1 = #{nums1}"

# 快速排序(尾递归优化
# 快速排序(递归深度优化
nums2 = [2, 4, 1, 0, 3, 5]
QuickSortTailCall.quick_sort(nums2, 0, nums2.length - 1)
puts "快速排序(尾递归优化)完成后 nums2 = #{nums2}"
puts "快速排序(递归深度优化)完成后 nums2 = #{nums2}"
end
8 changes: 4 additions & 4 deletions codes/rust/chapter_sorting/quick_sort.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ impl QuickSortMedian {
}
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
struct QuickSortTailCall;

impl QuickSortTailCall {
Expand All @@ -111,7 +111,7 @@ impl QuickSortTailCall {
i // 返回基准数的索引
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
pub fn quick_sort(mut left: i32, mut right: i32, nums: &mut [i32]) {
// 子数组长度为 1 时终止
while left < right {
Expand Down Expand Up @@ -141,8 +141,8 @@ fn main() {
QuickSortMedian::quick_sort(0, (nums.len() - 1) as i32, &mut nums);
println!("快速排序(中位基准数优化)完成后 nums = {:?}", nums);

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
let mut nums = [2, 4, 1, 0, 3, 5];
QuickSortTailCall::quick_sort(0, (nums.len() - 1) as i32, &mut nums);
println!("快速排序(尾递归优化)完成后 nums = {:?}", nums);
println!("快速排序(递归深度优化)完成后 nums = {:?}", nums);
}
6 changes: 3 additions & 3 deletions codes/swift/chapter_sorting/quick_sort.swift
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func quickSortMedian(nums: inout [Int], left: Int, right: Int) {
quickSortMedian(nums: &nums, left: pivot + 1, right: right)
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
func quickSortTailCall(nums: inout [Int], left: Int, right: Int) {
var left = left
var right = right
Expand Down Expand Up @@ -106,9 +106,9 @@ enum QuickSort {
quickSortMedian(nums: &nums1, left: nums1.startIndex, right: nums1.endIndex - 1)
print("快速排序(中位基准数优化)完成后 nums1 = \(nums1)")

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
var nums2 = [2, 4, 1, 0, 3, 5]
quickSortTailCall(nums: &nums2, left: nums2.startIndex, right: nums2.endIndex - 1)
print("快速排序(尾递归优化)完成后 nums2 = \(nums2)")
print("快速排序(递归深度优化)完成后 nums2 = \(nums2)")
}
}
8 changes: 4 additions & 4 deletions codes/typescript/chapter_sorting/quick_sort.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ class QuickSortMedian {
}
}

/* 快速排序类(尾递归优化) */
/* 快速排序类(递归深度优化) */
class QuickSortTailCall {
/* 元素交换 */
swap(nums: number[], i: number, j: number): void {
Expand All @@ -140,7 +140,7 @@ class QuickSortTailCall {
return i; // 返回基准数的索引
}

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
quickSort(nums: number[], left: number, right: number): void {
// 子数组长度为 1 时终止
while (left < right) {
Expand Down Expand Up @@ -171,10 +171,10 @@ const quickSortMedian = new QuickSortMedian();
quickSortMedian.quickSort(nums1, 0, nums1.length - 1);
console.log('快速排序(中位基准数优化)完成后 nums =', nums1);

/* 快速排序(尾递归优化) */
/* 快速排序(递归深度优化) */
const nums2 = [2, 4, 1, 0, 3, 5];
const quickSortTailCall = new QuickSortTailCall();
quickSortTailCall.quickSort(nums2, 0, nums2.length - 1);
console.log('快速排序(尾递归优化)完成后 nums =', nums2);
console.log('快速排序(递归深度优化)完成后 nums =', nums2);

export {};
8 changes: 4 additions & 4 deletions codes/zig/chapter_sorting/quick_sort.zig
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ const QuickSortMedian = struct {
}
};

// 快速排序类(尾递归优化
// 快速排序类(递归深度优化
const QuickSortTailCall = struct {

// 元素交换
Expand All @@ -118,7 +118,7 @@ const QuickSortTailCall = struct {
return i; // 返回基准数的索引
}

// 快速排序(尾递归优化
// 快速排序(递归深度优化
pub fn quickSort(nums: []i32, left_: usize, right_: usize) void {
var left = left_;
var right = right_;
Expand Down Expand Up @@ -152,10 +152,10 @@ pub fn main() !void {
std.debug.print("\n快速排序(中位基准数优化)完成后 nums = ", .{});
inc.PrintUtil.printArray(i32, &nums1);

// 快速排序(尾递归优化
// 快速排序(递归深度优化
var nums2 = [_]i32{ 2, 4, 1, 0, 3, 5 };
QuickSortTailCall.quickSort(&nums2, 0, nums2.len - 1);
std.debug.print("\n快速排序(尾递归优化)完成后 nums = ", .{});
std.debug.print("\n快速排序(递归深度优化)完成后 nums = ", .{});
inc.PrintUtil.printArray(i32, &nums2);

_ = try std.io.getStdIn().reader().readByte();
Expand Down
Loading
Loading