js 常见数据结构和算法(待更新)

2022-04-08  本文已影响0人  scrollHeart

一、排序

冒泡排序

比较相邻的元素,如果前一个比后一个大,交换之。

第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。

第二趟将第二大的数移动至倒数第二位
......
因此需要n-1趟;

function sort(element){
        for(var i = 0;i<element.length-1;i++) {
         
            for(var j = 0;j<element.length-i-1;j++){
         
                if(element[j]>element[j+1]){
                    //把大的数字放到后面
                    var swap = element[j];
                    element[j] = element[j+1];
                    element[j+1] = swap;
                }
            }
        }
    }
    var element = [3,5,1,2,7,8,4,5,3,4];
    //console.log("before:"+element);[3,5,1,2,7,8,4,5,3,4];
    sort(element);

选择排序

选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列

    Array.prototype.selectSort=function () {
        let arr=this,
            len = arr.length;
        for (let i = 0, len = arr.length; i < len; i++) {
    for (let j = i, len = arr.length; j < len; j++) {
      if (arr[i] > arr[j]) {
        [arr[i], arr[j]] = [arr[j], arr[i]];
      }
    }
  }
    return arr;
  }
  [1,2,3,4].selectSort()

二、栈和堆的区别?

三、数组随机排序

四、 js数组去重

链表

链表:存贮有序元素的集合,
但是不同于数组,每个元素是一个存贮元素本身的节点和指向下一个元素引用组成
要想访问链表中间的元素,需要从起点开始遍历找到所需元素

字典

类似对象,以key,value存贮值

二叉树

特点:每个节点最多有两个子树的树结构

上一篇 下一篇

猜你喜欢

热点阅读