sort

std.collections.sort

fun swap

pub fun swap[T](a: *T, b: *T);

交换两个指针处的值

a:指向第一个元素的指针 b:指向第二个元素的指针

fun reverse

pub fun reverse[T](data: *T, len: usize);

就地反转数组

data:指向数组的指针 len:元素数量

fun sort

pub fun sort[T](data: *T, len: usize, cmp: fun(*T, *T) i64);

使用 Ciura 间隔序列进行就地希尔排序

data:指向数组的指针 len:元素数量 cmp:若 a < b 返回负数、相等返回 0、若 a > b 返回正数的比较器

fun is_sorted

pub fun is_sorted[T](data: *T, len: usize, cmp: fun(*T, *T) i64) bool;

检查数组是否根据比较器已排序

data:指向数组的指针 len:元素数量 cmp:比较器 ret:如果按非降序排序则为 true

pub fun binary_search[T](data: *T, len: usize, target: *T, cmp: fun(*T, *T) i64) Result[usize, usize];

在已排序的数组中搜索目标

data:指向已排序数组的指针 len:元素数量 target:指向要查找的值的指针 cmp:比较器 ret:找到时返回 ok(index),未找到时返回 err(insert_position)