排序
排序有很多種算法,這里只寫基本的冒泡排序和快速排序
// 冒泡排序有兩種
// 一種是依次比較相鄰兩個數(shù)字消玄,如果前一個比后一個大宝冕,就交換位置暴备,這樣最后一位一定是最大的龙亲,依此類推
function bubbleSort(ary) {
for (let i = 0, len = ary.length; i < len - 1; i++) {
for (let j = 0; j < len - 1 -i; j++) {
if (ary[j] > ary[j + 1]) {
let temp = ary[j];
ary[j] = ary[j + 1];
ary[j + 1] = temp;
}
}
}
return ary;
}
// 一種是比較第一位與其他位的數(shù)字谜洽,如果第一位大于其他位的數(shù)字羔巢,就交換位置望忆,這樣第一位一定是最小的罩阵,
// 依此類推
function bubbleSort2(ary) {
for (let i = 0, len = ary.length; i < len - 1; i++) {
for (let j = i + 1; j < len; j++) {
if (ary[i] > ary[j]) {
let temp = ary[i];
ary[i] = ary[j];
ary[j] = temp;
}
}
}
return ary;
}
// 快速排序
function quickSort(ary) {
if (ary.length <= 1) {
return ary;
}
var index = Math.floor(ary.length / 2);
var num = ary.splice(index, 1)[0];
var left = [], right = [];
for (let i = 0, len = ary.length; i < len; i++) {
if (ary[i] < num) {
left.push(ary[i]);
} else {
right.push(ary[i]);
}
}
return quickSort(left).concat([num], quickSort(right));
}
去重
這里寫三種方法
// 借助indexOf方法遍歷
function unique(ary) {
var res = [];
for (let i = 0, len = ary.length; i < len; i++) {
let num = ary[i];
if (res.indexOf(num) == -1) {
res.push(num)
}
}
return res;
}
// 最快的
function unique1(ary) {
var obj = {}, res = [];
for (let i = 0, len = ary.length; i < len; i++) {
let num = ary[i];
if (!obj[num]) {
obj[num] = true;
res.push(num);
}
}
return res;
}
// 借助sort方法排序,然后只比較相鄰數(shù)字是否一樣
function unique2(ary) {
ary.sort();
var res = [ary[0]];
for (let i = 1, len = ary.length; i < len; i++) {
if (ary[i] !== res[res.length - 1]) {
res.push(ary[i]);
}
}
return res;
}