https://down.bccn.net/10547.html
最新的下载地址,修正了一些原本错误,
将排序功能拆分开来,无论是链表,指针数组还是结构数组,全部通吃.
手柄排序 视程显露 创建排序(捌無 個数) {
若(!個数) 返回 0;
手柄排序* 排序 = 创建资料((個数 + 1) * 得到長度(手柄排序*));
排序[0] = (手柄排序)個数;
返回 排序;
}
捌無 视程显露 得到排序個数(手柄排序 排序) {
返回 排序 ? (捌無)(*(手柄排序*)排序) : 0;
}
肆狀 视程显露 插入排序资料(手柄排序 排序, 捌無 位置, 手柄资料 资料) {
若(!排序 || !资料 || 位置 >= (捌無)(*(手柄排序*)排序)) 返回 假;
*((手柄排序*)排序 + 位置 + 1) = 资料;
返回 真;
}
肆狀 视程显露 排序比较(手柄排序 排序, 比较功能 比较) {
若(!排序 || !比较) 返回 假;
捌整 個数 = (捌整)(*(手柄排序*)排序);
捌整 左, 右, 中 = 個数;
手柄资料 上個, * 当前 = (手柄排序*)排序 + 1;
当((中 /= 2) > 0)
为(右 = 中; 右 < 個数; 右++) {
上個 = 当前[右];
左 = 右 - 中;
当(左 >= 0 && 比较(上個, 当前[左])) {
当前[左 + 中] = 当前[左];
左 -= 中;
}
当前[左 + 中] = 上個;
}
返回 真;
}
手柄资料 视程显露 得到排序资料(手柄排序 排序, 捌無 位置) {
返回 排序&& 位置 < (捌無)(*(手柄排序*)排序) ? *((手柄排序*)排序 + 位置 + 1) : 0;
}
肆狀 视程显露 释放排序(手柄排序 排序) {
返回 释放资料(排序);
}