大家好,我是爱吃奥特曼的饼干,热爱技术,热爱前端。
今天开始刷左神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的位置,谁大谁往右;
...