前言
长时间没有接触算法,脑子生锈,写下一些常见的排序、查找算法记在博客上给自己看,代码没有写注释。
排序
1 | var array = [32, 80, 1, 13, 7, 36, 49, 2, 33, 20, 55] |
1. 冒泡排序
1 | function bubbleSort(arr) { |
2. 选择排序
1 | function selectionSort(arr) { |
3. 插入排序
1 | function insertionSort(arr) { |
4. 归并排序
1 | function mergeSort(arr){ |
5. 快速排序
1 | // Nicholas C. Zakas 实现 in-place 不借助额外数组,节省空间 |
5. 堆排序
1 | function heapSort(arr) { |
查找
1. 二分法
1 | //Copyright 2009 Nicholas C. Zakas. All rights reserved. |
2. 最大子串
1 | function getMaxSub(s1, s2) { |
3. 二维数组查找
1 | var findTarget = function (target, arr) { |
杂七杂八
字符串转数字
1 | function atoi(n) { |
洗牌
1 | function shuffleFn(a) { |
斐波那契尾递归和缓存版
1 | // 尾递归 |
数组去重
1 | Array.prototype.unique = Array.prototype.unique || function () { |
数组取交集
1 | Array.prototype.intersect = Array.prototype.intersect || function (arr) { |
开方
1 |
|
快速幂
1 | function fastPow(x,n) { |