var arr = [12, 12, 12, 33, 44, 55, 55,44, 33, 44, 12, 21, 12, 67]; // 去重
function dichotomysort(arr) {
// 判断如果数组的项小于 1 的话直接返回数组
if (arr.length < 1) return arr;
// 求出数组的中间值下标,对数组进行二分
var tmp = Math.floor(arr.length / 2);
// 保存左边变量
var left = []
// 保存右边变量
var right = []
// 求出中间值
var tmpNum = arr.splice(tmp, 1)[0]
for (var i = 0; i < arr.length; i++) {
// 判断如果大于中间值就放到左边数组中,
if (tmpNum > arr[i]) {
left.push(arr[i]);
} else {
// 如果小于中间值就放到右边数组中;
right.push(arr[i]);
}
}
// 利用数组结构合并 对两个数组再次进行排序 然后和我们的中间值进行合并
return [...qiu(left), tmpNum, ...qiu(right)]
}
dichotomysort(arr)
JavaScript二分法排序
最新推荐文章于 2022-10-11 11:28:50 发布