数组与链表
数组是计算机按照数组大小开辟一个整块内存,存储数据的内存地址连续.且会为当前数组冗余多余长度. 方便插入时不会因为长度不够整体移动.链表每个数据都是单独,独立存储,上一个数据会存储下一个地址.
举例理解
电影院座位比作内存,舍友则比作需要存储的数据.舍友六人去看电影,要坐到一起.这种结构类似于数组,但电影院刚好没有连在一起的座位,大家只能分开坐. 舍友1记住舍友2的座位号 2->3 3->4 ....依次记住 这种存储结构类似于链表
优缺点
数组存储单元是连续的,我们查找可以直接按照顺序依次查找,也可以直接按照初始位置加增加的索引的值去找.但链表存储单元地址不连接,要找到最后一个,只能从第一个遍历到最后一个才能找到. 数组如果插入数据,在当前插入位置后面的数据都要往后移动.但链表只需要改变当前位置存储的下一个数据的指针即可.
数组适合查找遍历,链表适合插入删除等操作
选择排序的实现
const selectionSort = ary=>{
const len = ary.length-1;
let mid,temp;
for(let i = 0;i<len;i++){
mid = i;
for(let j = i+1;j<len+1;j++){
if(ary[mid]<ary[j]){
mid = j
}
}
temp = ary[i];
ary[i] = ary[mid];
ary[mid] = temp
}
return ary
}