冒泡排序
function test(arr) {
var t;
for(var i = 0; i < res.length; i++) {
for(var j = 0; j < res.length - 1; j++) {
if(res[j] > res[j + 1]) {
t = res[j];
res[j] = res[j + 1];
res[j + 1] = t;
}
}
}
}
选择排序
function test(arr) {
var minI, t;
for(var i = 0; i < arr.length; i++) {
minI = i;
for(var j = i+1; j < arr.length; j++) {
if(arr[j] < arr[minI]) {
minI = j;
}
}
t = arr[i];
arr[i] = arr[minI];
arr[minI] = t;
}
return arr;
}
快速排序
采用阮一峰的排序,简单易懂,虽然不是最正规的
原理:随便选一个数,把原数组里比这个数小的放左边,比这个数大的放右边,然后再把左边和右边的数组重复上面的操作,最后完成排序
function quickSort(arr) {
if(arr.length <=1) {
return arr;
}
var midI = Math.floor((arr.length-1)/2); //随便取了个数,这里拿了中间的index
var mid = arr.splice(midI, 1)[0]; //拿到中间的数,同时把原数组这个数删掉
var left = []; //用来存放比这个数小的数组
var right = []; //用来存放比这个数大的数组
for(var i = 0; i < arr.length; i++) { //循环原数组,把数放进数组里
if(arr[i] < mid) {
left.push(arr[i])
}else {
right.push(arr[i])
}
}
return quickSort(left).concat([mid], quickSort(right)) //递归排序
}
console.log(quickSort([131,6,2,4,12,52,31,42,51,424,13213])); //[2, 4, 6, 12, 31, 42, 51, 52, 131, 424, 13213]