var values = [ 3,1111,8,4,999,2 ];
正序:
values.sort(function(value1,value2){return value1 - value2;);
倒序:
values.sort(function(value1,value2){return value2 - value1; });
正序之所以不直接用values.sort()是因为sort函数是按照字符编码的顺序进行排序的,就算是数字也必须转换成字符串进行编码,直接用sort()的话,这个例子的结果会是 [1111, 2, 3, 4, 8, 999],显然与我们想要的不符。
面试题之冒泡排序:
Array.prototype.bubleSort=function () {
let arr = this,
len = arr.length;
for(let outer = len; outer >= 2; outer--) {
for (let inner = 0; inner <= outer - 1; inner++) {
if (arr[inner] > arr[inner + 1]) {
//升序
[arr[inner], arr[inner + 1]] = [arr[inner + 1], arr[inner]];
console.log([arr[inner], arr[inner + 1]]);
}
}
}
return arr;
}
[11,2,3,4].bubleSort()
//[2,3,4,11]
面试题之选择排序:
Array.prototype.selectSort=function () {
let arr=this,
len = arr.length;
for(let i = 0; i < len; i++) {
for (let j = i; j < len; j++) {
if (arr[i] > arr[j]) {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
}
return arr;
}
[11,2,3,4].selectSort()
//[2,3,4,11]