桶排序
原理 : 数组下标会自动排序 没有的部分用empty代替
function sort(arr) {
var newArr = []; //定义一个新数组
//遍历数组 取出原数组的每一位
for(var i = 0 ; i < arr.length ; i ++) {
//把原数组的每一位的值当作新数组的下标 并随意赋值(数组下标会自动排序)
newArr[arr[i]] = 1 ;
}
arr.length = 0; //清空原数组
//取出新数组的下标
for(var key in newArr) {
arr.push(+ key); //转换为数字再赋给原数组
}
return arr; //返回原数组
}
快速排序
原理 : 利用递归 找中点 分左右
function sort(arr) {
//递归出口
if(arr.length === 1 || arr.length === 0) {
return arr;
}
// 找中间下标和中间值
var mid_index = parseInt(arr.length / 2); //中间下标
var mid_value = arr[mid_index]; //中间值
var left = [];
var right = [];
//遍历数组
for(var i = 0 ;i < arr.length ; i ++) {
if(i === mid_index) { //当遍历到自己时直接跳过
continue;
}
if(arr[i] < mid_value) { //小于中间值
left.push(arr[i]); //放到左边的数组中
}else{
right.push(arr[i]); //相反放到右边的数组中
}
}
//数组拼接 中间值必须变为数组
return sort(left).concat([mid_value] , sort(right));
}
来源:CSDN
作者:豆浆不好喝
链接:https://blog.csdn.net/weixin_45178648/article/details/104733093