数组和链表
数组:数组的元素带编号,并从0开始;同一个数组中所有元素的类型必须相同;
链表:每一个元素记录了下一个元素的地址,将一系列随机的内存地址串在一起;
- 插入:
链表:具有优势,只需要将新元素放入内存,再将其地址存储到前一个元素中;
数组:插入时需要将后面的元素都向后移;
- 删除
链表:更好的选择,只需要修改前一个元素指向的地址;
数组:还需要将后面的元素都向前移;
- 读取
读取所有元素时,链表的效率很高;
随机读取时,数组的效率高。
选择排序
function findSmall(arr) {
var smallA = arr[0],
smallI = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] < smallA) {
smallA = arr[i]
smallI = i
}
}
return smallI;
}
function selectionSort(arr) {
var newArr = [];
var len = arr.length;
while (len > 0) {
var smallI = findSmall(arr);
var smallA = arr.splice(smallI, 1);
len -= 1;
newArr = newArr.concat(smallA)
}
return newArr;
}
console.log(selectionSort([0, 9, 3, 6, 2]));
//[ 0, 2, 3, 6, 9 ]
单纯的数字排序可以这样做:
function sortNum(a, b) {
return a - b;
}
console.log([0, 9, 3, 6, 2].sort(sortNum));
//[ 0, 2, 3, 6, 9 ]