摘要: 算法的不同会导致其运行时间产生大幅变化。使用相同的算法,输入数据的量不同,运行时间也会不同。比如,对10 个数字排序和对1 000 000 个数字排序,很容易就想到后者的运行时间更长。 那么,实际上运行时间会长多少呢?后者是前者的100 倍,还是1 000 000 倍?就像这样,我们不光要理解不同算 阅读全文
posted @ 2020-04-08 18:10 laolaotongg 阅读(1858) 评论(0) 推荐(0)
摘要: 能解决排序问题的算法不止选择排序一个。那么,当有多个算法都可以解决同一个问题时,我们该如何选择呢? 在算法的评判上,考量的标准也各有不同。 比如,简单的算法对人来说易于理解,也容易被写成程序,而在运行过程中不需要耗费太多空间资源的算法,就十分适用于内存小的计算机。不过,一般来说我们最为重视的是算法的 阅读全文
posted @ 2020-04-08 18:00 laolaotongg 阅读(367) 评论(0) 推荐(0)
摘要: 算法是计算或者解决问题的步骤,要想用计算机解决特定的问题,就要遵循算法。 特定问题多种多样,比如“将随意排列的数字按从小到大的顺序重新排列”,“寻找出发点到目的地的最短路径”,等等。 算法的步骤都是用数学方式来描述的,所以十分明确。算法和程序有些相似,区别在于程序是以计算机能够理解的编程语言编写而成 阅读全文
posted @ 2020-04-08 17:53 laolaotongg 阅读(1857) 评论(0) 推荐(0)
摘要: 对比二分查找和线性查找的步数差异,发现二分查找的步数为O(log N),比线性查找的O(N)快得多。 大O记法能客观地衡量各种算法的时间复杂度,是比较算法的利器。 大O可以与其他常用的算法比较,如果通过大O 发现自己的算法比其他的要慢,就应该退一步,好好想想怎样优化它,才能使它变成更快的那种大O。 阅读全文
posted @ 2020-04-04 22:45 laolaotongg 阅读(465) 评论(0) 推荐(0)
摘要: 线性查找并不总是O(N)的。当要找的元素在数组末尾,那确实是O(N)。但如果它在数组开头,1 步就能找到的话,那么技术上来说应该是O(1)。所以概括来说,线性查找的最好情况是O(1),最坏情况是O(N)。虽然大O可以用来表示给定算法的最好和最坏的情景,但若无特别说明,大O 记法一般都是指最坏情况。因 阅读全文
posted @ 2020-04-03 17:42 laolaotongg 阅读(4822) 评论(0) 推荐(1)
摘要: 影响算法性能的主要因素是其所需的步数。一个算法的步数并不是固定的。以线性查找为例,它的步数等于数组的元素数量。 如果数组有22 个元素,线性查找就需要22 步;如果数组有400 个元素,线性查找就需要400 步。 量化线性查找效率的更准确的方式应该是:对于具有N 个元素的数组,线性查找最多需要N步。 阅读全文
posted @ 2020-04-02 17:50 laolaotongg 阅读(286) 评论(0) 推荐(0)
摘要: 算法效率通过时间和空间判定,二者有冲突怎么办?如何折中? 需进一步思考。 待整理。 阅读全文
posted @ 2020-03-15 13:59 laolaotongg 阅读(148) 评论(0) 推荐(0)
摘要: 排序算法有哪些? 假设有一个没有任何排列顺序的电话号码簿(或笔记本)。当需要添加联络人和电话时,你只能将其写在下一个空位上。假定你的联系人列表上有很多人。某天,你要找某个联系人及其电话号码。但是由于联系人列表没有按照任何顺序来组织,你只能逐个检查,直到找到那个你想要的联系人为止。那得花多长时间啊?需 阅读全文
posted @ 2020-03-15 13:53 laolaotongg 阅读(361) 评论(0) 推荐(0)