常用算法 解析

算法

解决问题的步骤,方法

给你一个有序的数组:  [-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:

二分查找 -- 前提:  必须是有序的数组


常用算法 解析_第1张图片


常用算法 解析_第2张图片
/////////////

二分,  分治  --  分而治之

分治法:  可以解决绝大多数算法问题

找最小值:一分为二,left=递归左最小,right=递归右最小,比较left和right返回

数组去重:一分为二,left递归去重,right递归去重,循环right,如果不在left里,加到left,返回left


常用算法 解析_第3张图片


常用算法 解析_第4张图片


常用算法 解析_第5张图片

数据结构:

算法,离不开数据结构

有序的数组--数据结构

无序的数组--数据结构

算法,没有最好的算法,有最合适的算法

何为好坏:

衡量算法好坏,两个指标:

时间:时间复杂度 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 =========


常用算法 解析_第6张图片


常用算法 解析_第7张图片


常用算法 解析_第8张图片
常用算法 解析_第9张图片

=========2016年11月29日 星期二 16:01:16 =========

散列:哈希  hash

数组  存数据时,就用下标

例 :  5--->arr[5]

3--->arr[3]

数n  %  arr.length  --->  目标位置


常用算法 解析_第10张图片
常用算法 解析_第11张图片

你可能感兴趣的:(常用算法 解析)