################## 归并排序 ####################### """ 归并算法逻辑 拆分 对整个序列进行拆分,左边一部分,右边一部分 然后对每一部分再次进行拆分,一直到拆分到只有一个元素,就到头了, 第1次拆分:54, 26, 93, 17, 77, 31, 44, ...
分类:
编程语言 时间:
2020-02-23 09:59:37
阅读次数:
87
排序 参考 "五分钟学算法" 复杂度比较 时间复杂度 O(n2) 各种简单的排序:直接插入、直接选择、冒泡 O(nlog2n) 快速排序、堆排序、归并排序 O(n1+$\lambda$),希尔排序 线性阶O(n)排序,基排序、桶、箱排序 稳定性 稳定排序:冒泡、插入、归并、基数排序 不稳定:选择、快 ...
分类:
编程语言 时间:
2020-02-22 13:40:19
阅读次数:
86
分治法的思想: 分治法的思想是分开求解然后合并。分治法的思想在很多算法中都广泛使用,例如二分查找,归并排序,快速排序。 分治法的主要步骤; 1、 划分问题:把问题分为子问题。 2、 递归求解:递归解决问题。 3、 合并问题:合并子问题得到原问题的解。 典型例题: 给出一个数组n的序列A1,A2, A ...
分类:
其他好文 时间:
2020-02-21 20:45:18
阅读次数:
69
对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。 A. 正确 B. 错误 解析:运行异常,可以通过java虚拟机来自行处理。非运行异常,我们应该捕获或者抛出。 答案:B 下面哪些类可以被继承? Java.lang.Thread、java.lang.Number、java.lan ...
分类:
其他好文 时间:
2020-02-20 14:59:38
阅读次数:
161
1、直接插入排序 def insert_sort(alist): """插入排序""" n = len(alist) for j in range(1,n): i = j while i > 0: if alist[i] < alist[i-1]: alist[i],alist[i-1] = ali ...
分类:
编程语言 时间:
2020-02-20 13:19:44
阅读次数:
75
分治与汉诺塔 分治算法 分治算法介绍 分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排 ...
分类:
其他好文 时间:
2020-02-20 10:12:53
阅读次数:
62
模 $|(x,y)|=\sqrt{x^2+y^2}$ 点积 $(ax,ay) (bx,by)=ax bx+ay by$ 叉积 $(ax,ay)\times(bx,by)=ax by ay bx$ 夹角 $$表示从$\vec a$逆时针旋转到$\vec b$的角度。 $\cos=\frac{\vec ...
分类:
其他好文 时间:
2020-02-19 21:12:44
阅读次数:
90
归并排序是一种非常经典的分治算法,也是非常精美的算法。学习归并排序,对于理解分治法思想、提高算法思维能力十分有帮助。 ...
分类:
编程语言 时间:
2020-02-19 13:15:19
阅读次数:
83
归并排序 1. 算法推导 对一个等待排序的数组A,以及排序函数sort,以及合并两个有序数组的函数merge。则 sort(A) = merge(sort(A1), sort(A2)),上面这个推导公式看起来是满足递归算法的重复条件。举个例子: 2. 代码实现 2.1 递归实现 2.2 非递归实现 ...
分类:
编程语言 时间:
2020-02-18 14:57:50
阅读次数:
74