算法图解-选择排序

145 阅读1分钟

数组与链表

数组是计算机按照数组大小开辟一个整块内存,存储数据的内存地址连续.且会为当前数组冗余多余长度. 方便插入时不会因为长度不够整体移动.链表每个数据都是单独,独立存储,上一个数据会存储下一个地址.

举例理解

电影院座位比作内存,舍友则比作需要存储的数据.舍友六人去看电影,要坐到一起.这种结构类似于数组,但电影院刚好没有连在一起的座位,大家只能分开坐. 舍友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
}

16c1387a059de912_tplv-t2oaga2asx-watermark.awebp