算法导论
未来就在你手中
这个作者很懒,什么都没留下…
展开
-
归并排序
list1 = [10,8,7,9,6,5,2,4,3,1];count = len(list1);def mergeSort(list0, i, j): if i < j: k = (int)((i + j) / 2) mergeSort(list0, i, k) mergeSort(list0, k + 1, j) mer原创 2017-04-20 08:57:21 · 477 阅读 · 0 评论 -
插入排序
代码块代码块语法遵循标准markdown代码,例如: “` pythonlist1 = [10,8,7,9,6,5,2,4,3,1]; count = len(list1); print(“Before:”); print(list1); for i in range(1, count): key = list1[i] j = i - 1 while j >=原创 2017-04-20 00:05:59 · 595 阅读 · 0 评论 -
选择排序
list1 = [10,8,7,9,6,5,2,4,3,1];count = len(list1);for i in range(0, count - 1): min = list1[i] n = i; for j in range(i + 1, count): if list1[j] < min: min = list1[j]原创 2017-04-20 08:55:02 · 635 阅读 · 0 评论 -
用递归实现插入排序
list1 = [10,8,7,9,6,5,2,4,3,1];count = len(list1);def recursiveInsert(list0, len0): if len0 == 1: return recursiveInsert(list0, len0 - 1); index = len0 - 1; tmp = list0[index];原创 2017-04-20 10:22:02 · 3350 阅读 · 0 评论 -
二分查找算法的递归与非递归实现
递归实现list1 = [1,2,3,4,5,6,7,8,9,10];count = len(list1);def rbs(list0, start, end, a): mid = (int)((start + end) / 2); if a == list0[mid]: return mid if start == mid and mid == end:原创 2017-04-20 11:57:42 · 1435 阅读 · 0 评论 -
确定n个元素的任何排序中逆序对数量
《算法导论》第三版 P24,2-4思考题list1 = [10,9,8,7,6,5,4,3,1,2];count = len(list1);def mergeSort(list0, i, j): inversionNum = 0 if i < j: k = (int)((i + j) / 2) inversionNum = inversionNum原创 2017-04-20 21:24:28 · 1444 阅读 · 0 评论 -
分治策略求最大子数组
《算法导论》第四章 分治法所能解决的问题一般具有以下几个特征: 1. 该问题的规模缩小到一定的程度就可以容易地解决; 2. 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。 3. 利用该问题分解出的子问题的解可以合并为该问题的解; 4. 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。使用分治策略有两个关键点:一是把分解成子问题,二是找准终止原创 2017-04-21 10:47:05 · 1036 阅读 · 1 评论 -
确定集合中是否存在两个其和刚好为X的元素?
《算法导论》第三版 P22,2.3-7练习题list1 = [1,2,3,4,5,6,7,8,10,19];count = len(list1);stack4 = []stack2 = []def bsf2(list0, start1, end1, start2, end2, a): flags = [False, False, False, False]; if原创 2017-04-20 19:57:45 · 795 阅读 · 0 评论