## 冒泡排序
```
var arr = []
for (let i = 0; i < 10000; i++) {
arr.push(parseInt(Math.random()*10000));
}
console.time('t');
bubbleSort(arr);
console.timeEnd('t');
console.log(arr);
// 2 1 4 3 5 6
function bubbleSort(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j+1]) {
let tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
```
<br>
## 原生排序
```
var arr = []
for (let i = 0; i < 10000; i++) {
arr.push(parseInt(Math.random()*10000));
}
console.time('t');
arr.sort()
console.timeEnd('t');
console.log(arr);
```
<br>
## 快速排序
```
var arr = []
for (let i = 0; i < 10000; i++) {
arr.push(parseInt(Math.random()*10000));
}
// console.log(arr);
console.time('t');
let arr2 = quickSort(arr);
console.timeEnd('t');
console.log(arr2);
// 快速排序初级版
function quickSort(arr) {
//如果数组<=1,则直接返回
if (arr.length <= 1) {
return arr;
}
var pivotIndex = Math.floor(arr.length / 2);
//找基准,并把基准从原数组删除
var pivot = arr.splice(pivotIndex, 1)[0];
//定义左右数组
var left = [];
var right = [];
//比基准小的放在left,比基准大的放在right
for (var i = 0; i < arr.length; i++) {
if (arr[i] <= pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
//递归
return quickSort(left).concat([pivot]).concat(quickSort(right));
}
```
- 初级前端题
- 必会
- http协议
- 跨域
- cookie与storage
- 移动端问题
- 性能优化
- Vue全家桶
- 有哪些常用的es6语法?
- 项目
- 闭包
- JSON
- 数据类型与运算
- 数组
- DOM
- 字符串
- 要会
- async与await
- 正则
- this
- 数据加密
- 实时获取数据
- 原生ajax
- 异步打印
- css相关
- 杂七杂八
- webpack
- 一般
- mvvm模式
- 异步请求
- XSS
- 其他dom问题
- 冷门
- 浏览器缓存机制
- 新
- 浏览器事件轮询
- Promise
- 树的深度优先与广度优先
- 拷贝
- 继承
- Vue
- 跨域
- 排序
- 浏览器
- 浏览器入门
- 浏览器内核知识
- 浏览器渲染原理
- 浏览器性能调优
- 自动化构建
- 字符编码
- git
- 一些题目
- 其他
- 逻辑思维题
- 互联网公司招聘信息如何阅读
- bat面试