1.所谓的递归慢到底是什么原因呢? 大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的。具体是每次调用函数本身要保存的内容包括:局部变量、形参、调用函数地址、返回值。那么,如果递归调用N次,就要分配N*局部变量、N*形参、N*调用 ...
分类:
编程语言 时间:
2018-08-12 15:49:26
阅读次数:
192
学过c语言与c语言的数据结构与算法后再来学习python,感觉编程的核心内容没有变,但每个编程语言都有自己的特点。本次学习的目标是理解python的特点与用法,把学过的bif(内置函数)用法记录下来,最后实现一些python的实际用法。教程视频:小甲鱼python,python版本3.7 comma ...
分类:
编程语言 时间:
2018-08-12 14:17:46
阅读次数:
176
1.代码实现 2.注意: (1)归并排序采用的先拆分后合并的思想;递归拆分到不能继续拆分时停止拆分,然后进行比较,最后递归合并 3.时间复杂度 最优时间复杂度:O(nlogn) 最坏时间复杂度:O(nlogn) 稳定性:稳定 ...
分类:
编程语言 时间:
2018-08-12 12:14:39
阅读次数:
138
1.希尔排序的原理 2.代码实现 注意: (1)希尔排序采用的是先拆分后合并的思想,拆分的时候是间隔拆分 3.时间复杂度 最优时间复杂度:根据步长序列的不同而不同 最坏时间复杂度:O(n2) 稳定想:不稳定 ...
分类:
编程语言 时间:
2018-08-12 12:12:58
阅读次数:
135
1.二分查找的原理 对于已经排序的列表进行最快速度的查找 2. 代码实现 (1)递归实现 (2)非递归实现 3.时间复杂度 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 因为是二分所有分多少次代表要查多少次,即为logn ...
分类:
编程语言 时间:
2018-08-12 12:05:25
阅读次数:
119
1.选择排序的原理 2.代码实现 3.时间复杂度 最优时间复杂度:O(n2) 最坏时间复杂度:O(n2) 稳定性:不稳定(考虑升序每次选择最大的情况) ...
分类:
编程语言 时间:
2018-08-12 12:03:42
阅读次数:
140
1.插入排序的原理 2.代码实现 3.时间复杂度 最优时间复杂度:O(n) (升序排列,序列已经处于升序状态) 最坏时间复杂度:O(n2) 稳定性:稳定 ...
分类:
编程语言 时间:
2018-08-12 12:02:09
阅读次数:
113
1.什么是算法 自己的理解就是解决问题的方法。 工作的本质就是解决问题--彼得德鲁克 2.循环 循环四要素:初始化变量、循环的条件、循环变量的变化迭代、循环的代码块 while:先判断循环条件,后执行循环体; do while:先执行一次循环体,再判断循环条件; 两者区别:正常运行情况下,while ...
分类:
编程语言 时间:
2018-08-11 20:49:25
阅读次数:
171
1.排序算法的稳定性 稳定排序算法会让原本有相同键值的记录维持相对次序 例如:对以下元组按照元组的第一个元素升序排列,元组如下: (4,1) (3,1) (3,7) (5,6) 若要满足条件,则可能的排序有: 情况一: (3,1) (3,7) (4,1) (5,6) 情况二: (3,7) (3,1) ...
分类:
编程语言 时间:
2018-08-11 01:38:57
阅读次数:
168