算法
解决问题的步骤,方法
给你一个有序的数组: [-10,8,20,35,70,1000]
find:
```
var arr = [-10,8,20,30,35,70,1000];
function find(n){
for(var i = 0; i
if(arr[i] == n){
return true;
}
}
return false;
}
alert(find(78));
```
find2:
二分查找 -- 前提: 必须是有序的数组
二分, 分治 -- 分而治之
分治法: 可以解决绝大多数算法问题
找最小值:一分为二,left=递归左最小,right=递归右最小,比较left和right返回
数组去重:一分为二,left递归去重,right递归去重,循环right,如果不在left里,加到left,返回left
数据结构:
算法,离不开数据结构
有序的数组--数据结构
无序的数组--数据结构
算法,没有最好的算法,有最合适的算法
何为好坏:
衡量算法好坏,两个指标:
时间:时间复杂度 O(log(2)n)
空间:空间复杂度 S
=========2016年11月29日 星期二 14:27:56 =========
分析不同数据结构
数据,增 修改 删除 查询
前提:数据不重复
=========2016年11月29日 星期二 15:06:23 =========
增 查 综合
无序数组 50 39 85
有序数组 5000 5 5100
二叉树 25 12 35
散列 240 75 340
=========2016年11月29日 星期二 15:06:27 =========
=========2016年11月29日 星期二 16:01:16 =========
散列:哈希 hash
数组 存数据时,就用下标
例 : 5--->arr[5]
3--->arr[3]
数n % arr.length ---> 目标位置