算法
Dan.Qiao
90%努力+%10幸运=100%幸福
展开
-
浅谈递归转非递归
递归的本质递归函数的本质是“(函数)栈”的使用,所以我们如果可以手动模拟这个栈及出栈入栈的过程,那就可以免掉函数多次调用的开销,将递归转换为非递归一个求全排列的例子递归方式class Permute: @staticmethod def get_all_permute(l_raw: list) -> list: list_all = [] def recursive_permute(l_tmp: list, l_res: list = [])原创 2021-11-24 07:02:30 · 493 阅读 · 0 评论 -
稳定排序和不稳定排序的区别和代表
关于排序稳定性的定义通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。问题来了,什么时候必须要求使用稳定排序呢?由上面的定义可知道稳定性排序保证了排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。那么,当现实应用中排序的需求需要区别先后...转载 2019-09-20 00:14:16 · 1327 阅读 · 0 评论 -
算法基础之我的Python排序算法代码收藏集
参考: 十大经典排序算法动图图解附录:辅助记忆特点:冒泡–相临元素边比较边交换选择–每次都查找无序区的所有元素,找到最(小)值然后放在有序区的(结尾)。插入–每次都查找有序区的元素,以决定从无序区取出的元素插入有序区的位置。希尔–增量分组排序(分组大小逐渐增大),各分组内部采用直接插入排序。归并–采用分治法划分若干子序列,然后使每个子序列有序,再使子序列段间有序(若将两个有序表合并...原创 2019-09-29 20:27:58 · 262 阅读 · 0 评论