1.es6新增sort方法
比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等
则返回 0,如果第一个参数应该位于第二个之后则返回一个正数
记住: sort中接收两个参数,如果想要第一个参数在前,我们就返回-1
实现:
goods.sort((a,b)=>{
if (this.sort==1) {
return a.price -b.price
} else {
return b.price-a.price
}
})
2.冒泡排序:
将数组中的相邻两个元素两两比较,通过比较移动大小位置
实现:
function MaoPaoSort(arr) {
for (var w = 0; w <= arr.length; w++) {
for (var n = 0; n <= arr.length - w; n++) {
if (arr[n] > arr[n + 1]) {
var kong = arr[n];
arr[n] = arr[n + 1];
arr[n + 1] = kong;
}
}
}
}
var arr = [3, 5, 1, 2, 7, 8, 4, 5, 3, 4];
MaoPaoSort(arr);
console.log(arr); //[1, 2, 3, 3, 4, 4, 5, 5, 7, 8]
3.插队排序:
将要排序的数组分成两部分,从后面的部分取出索引最小的元素插入到前一部分的适当位置
实现:
function InsertSort(arr) {
let len = arr.length;
let preIndex, current;
for (let i = 1; i < len; i++) {
preIndex = i - 1;
current = arr[i];
while (preIndex >= 0 && current < arr[preIndex]) {
arr[preIndex + 1] = arr[preIndex];
preIndex--;
}
arr[preIndex + 1] = current;
}
return arr;
}
var arr = [3,5,7,1,4,56,12,78,25,0,9,8,42,37];
InsertSort(arr);