【左神视频系列】1. 认识复杂度和简单算法

298 阅读1分钟

大家好,我是爱吃奥特曼的饼干,热爱技术,热爱前端。

今天开始刷左神B站的算法和数据结构视频课程,眼过千遍不如手过一遍,练习一下,总结一下,把接收到的消化一下

左神视频传送门: www.bilibili.com/video/BV13g…

正文

废话不多说,第一节课主要讲了评估一个算法优劣的指标和简单算法,中间穿插着讲了异或运算、二分法、对数器

时间复杂度

一个算法的常数操作次数,用O()表示,时间复杂度按照算法的最差结果计算

常数操作:比如数组寻址是常数操作

选择排序

从0到n-1选一个最小值放到0位置;

从1到n-1选一个最小值放到1位置;

...

从n-2到n-1选一个最小值放到2位置;

    const sortArr = (arr) => {
        for(let i = 0; i < arr.length; i++) {
            let min = i;
            for(let j = i + 1; j < arr.length; j++) {
                if(arr[j] < arr[min]) {
                    min = j;
                }
            }
            const tem = arr[min];
            arr[min] = arr[i];
            arr[i] = tem;
        }

        return arr
    }

冒泡排序

第一次循环:

0到1的位置,谁大谁往右; 1到2的位置,谁大谁往右; ... n-2到n-1的位置,谁大谁往右;

第二次循环:

0到1的位置,谁大谁往右; 1到2的位置,谁大谁往右; ... n-3到n-2的位置,谁大谁往右;

...

  

插入排序

有序数组找到某个值

数组找出唯一出现奇数次的数

数组找出两个出现奇数次的数

一个相邻位置不相等的数组,找到任意一个局部最小值