跳到主要内容

Woodpecker 啄木鸟

网站直达: https://woodpecker.clover-blog.cn

努力更新中ing...

文档结构:

目前共创:

mnxjlhui

右上角可以查看仓库,欢迎大家 fork,共同完善

本地启动方式:

1、npm insatll / yarn
2、npm run prepare / yarn prepare
3、npm run dev/ yarn dev

url目录映射关系:

const NameMap = {
'3-code': '代码题',
'2-basics': '基础',
'4-frontend': '大前端',
'4-scenario-questions': '场景题',
'2-backend': '后端',
'6-network': '网络',
'8-test': '测试',
'3-database': '数据库',
'5-interview-exp': '面试经验',
'2-leet-code':'力扣',
'6-good-tools': '好工具分享',
'7-issue': '遇到的问题',
}

面经也可以选择投稿 773178360@qq.com 或者提 PR

好的复盘是可以帮助你下一次更好的拿到 offer

常用排序算法和概念

排序算法时间复杂度空间复杂度稳定性
冒泡排序O(n^2)O(1)稳定
选择排序O(n^2)O(1)不稳定
插入排序O(n^2)O(1)稳定
快速排序O(nlogn)~O(n^2)O(logn)~O(n)不稳定
归并排序O(nlogn)O(n)稳定
堆排序O(nlogn)O(1)不稳定
基数排序O(nk)O(n+k)稳定
希尔排序O(n^1.3)~O(n^2)O(1)不稳定
  1. 冒泡排序:两次循环,比较两个数据元素,如果顺序不对则进行交换;
  2. 选择排序:找到最小(大)元素,存放到排序序列的起始位置,剩余以此类推,直到所有元素均排序完毕;
  3. 插入排序:有序序列,从后向前扫描,找到相应位置并插入,直到整个数组有序;
  4. 快速排序:选择一个基准元素,通过一趟排序将待排序列分割成两部分,其中一部分的元素都比基准元素小,另一部分的元素都比基准元素大,然后对这两部分分别进行快速排序,整个排序过程可以递归进行,最终得到有序序列;
  5. 归并排序:将已有序的子序列合并,得到完全有序的序列。即先使每个子序列有序,再使子序列段间有序;
  6. 堆排序:利用堆这种数据结构所设计的一种排序算法,将初始待排序关键字序列构建成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点,将其与末尾元素进行交换,使末尾元素最大,然后再将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次大值,如此反复执行,便能得到一个有序序列;
  7. 计数排序:根据数组中每个元素的值,计算出该元素在排序后数组中的位置,并将其放入相应位置;
  8. 桶排序:将数组分到有限数量的桶里,然后对每个桶内的元素进行单独排序,最后将各个桶中的元素合并起来;
  9. 基数排序:按照低位先排序,然后收集,再按照高位排序,再收集,以此类推,直到最高位。