发表于: 2017-07-05 23:23:31

1 948


今天完成的事情:

准备小课堂,算法好难,。。,,,,

一、背景介绍

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

二、知识剖析

算法的特点

1.有限性(Finiteness):一个算法必须保证执行有限步之后结束。

2.确切性(Definiteness): 一个算法的每一步骤必须有确切的定义。

3.输入(Input):一个算法有零个或多个输入,以刻画运算对象的初始情况,所谓零个输入是指算法本身给定了初始条件。

4.输出(Output):一个算法有一个或多个输出。没有输出的算法毫无意义。

5.可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

三、常见问题

几种常见算法的写法及实现

四、解决方案  编码实战

冒泡排序(Bubble Sort)

思想:每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置

实现:需要用到两层for循环,外层从第一个数到倒数第二个数,内层从外层的后面一个数到最后一个数

特点:排序算法的基础。简单实用易于理解,缺点是比较次数多,效率较低。


冒泡排序

快速排序(Quick Sort)

思想:先找到一个基准点(一般指数组的中部),然后数组被该基准点分为两部分,依次与该基准点数据比较,如果比它小,放左边;反之,放右边。

左右分别用一个空数组去存储比较后的数据。最后递归执行上述操作,直到数组长度<=1;

特点:快速,常用。缺点是需要另外声明两个数组,浪费了内存空间资源。



快速排序

插入排序(Insertion Sort)

(1) 从第一个元素开始,该元素可以认为已经被排序

(2) 取出下一个元素,在已经排序的元素序列中从后向前扫描

(3) 如果该元素(已排序)大于新元素,将该元素移到下一位置

(4) 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

(5)将新元素插入到下一位置中

(6) 重复步骤2


插入排序

五、扩展思考

这几种排序算法的优缺点


n: 数据规模

k:“桶”的个数

In-place: 占用常数内存,不占用额外内存

Out-place: 占用额外内存

稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同

六、参考文献

PPT

JS的十大经典算法排序

JS实现两种实用的排序算法——冒泡、快速排序

七、更多讨论

还有别的排序算法吗


明天计划的事情:

接着昨天的计划完成复盘


遇到的问题:

算法看不懂,。。


收获:

了解了js还有这么6的东西,,,,,



返回列表 返回列表
评论

    分享到