Closed Chanyon closed 3 months ago
其他AI:
const std = @import("std");
fn quickSort(arr: []*i32, low: usize, high: usize) !void {
if (low < high) {
var pivot: usize = partition(arr, low, high);
quickSort(arr, low, pivot - 1);
quickSort(arr, pivot + 1, high);
}
}
fn partition(arr: []*i32, low: usize, high: usize) usize {
var pivot: i32 = *arr[high];
var i: usize = low;
for (j := low; j < high; : (j += 1)) {
if (*arr[j] <= pivot) {
arr[i] = arr[j];
arr[j] = arr[i + 1];
i += 1;
}
}
arr[i] = arr[high];
arr[high] = arr[i + 1];
return i;
}
pub fn main() !void {
var arr: []*i32 = try std.heap.GeneralPurposeAllocator.alloc(int, 10);
try arr[0] = 10;
try arr[1] = 7;
try arr[2] = 8;
try arr[3] = 9;
try arr[4] = 1;
try arr[5] = 5;
try arr[6] = 2;
try arr[7] = 3;
try arr[8] = 4;
try arr[9] = 6;
quickSort(arr, 0, 9);
for (i := 0; i < 10; : (i += 1)) {
std.io.getStdOut().writer().print("{} ", *arr[i]);
}
}
修改:在线运行
const std = @import("std");
fn quickSort(arr: []i32, low: usize, high: usize) void {
if (low >= high) {
return;
}
const pivot: usize = partition(arr, low, high);
std.debug.print("{any}\n",.{pivot});
quickSort(arr, low, pivot);
quickSort(arr, pivot + 1, high);
}
fn partition(arr: []i32, low: usize, high: usize) usize {
var i: usize = low;
var j:usize = high;
while (i < j) {
while (i < j and arr[j] >= arr[low]) {
j -= 1;
}
while (i < j and arr[i] <= arr[low]) {
i += 1;
}
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
const temp1 = arr[i];
arr[i] = arr[low];
arr[low] = temp1;
return i;
}
pub fn main() !void {
var arr: []i32 = try std.heap.page_allocator.alloc(i32, 10);
arr[0] = 10;
arr[1] = 7;
arr[2] = 8;
arr[3] = 9;
arr[4] = 1;
arr[5] = 5;
arr[6] = 2;
arr[7] = 3;
arr[8] = 4;
arr[9] = 6;
quickSort(arr, 0, 9);
for (0..10) |i| {
std.debug.print("{any} ", .{arr[i]});
}
}
例如:用ziglang写一个快速排序函数。