## 冒泡排序
```
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面試