算法
w狸猫
愉快的玩耍
展开
-
算法——排序——选择排序
选择排序的特点:1.运行时间和实际输入无关(O(n))2.数据移动是最少的Code:def sortSelect(arr): n = len(arr) for i in range(0, n): min = i; for j in range(i+1, n): if arr[j] < arr[i]:原创 2016-04-12 16:08:14 · 208 阅读 · 0 评论 -
算法——排序——插入排序
插入排序的特点:1.所需时间取决于输入元素的初始顺序,适用于一个很大且其中元素基本有序的数组2.O(n^2)Code:def sortInsert(arr): n = len(arr) for i in range(1, n): j = i while j > 0 and arr[j] < arr[j - 1]:原创 2016-04-12 16:23:27 · 224 阅读 · 0 评论 -
算法——排序——归并排序
描述:1.先将它分成两半,分别排序,然后将结果归并2.O(nlogn)(最好与最坏都一样)3.稳定的排序Code:自顶向下(体现分治法的思想)class Sort: arrTemp = None @classmethod def sort(cls,arr): arrTemp = [0 for i in range(0, len(ar原创 2016-04-12 18:02:46 · 205 阅读 · 0 评论 -
算法——排序——快速排序
快速排序:1.原地排序2.O(nlogn)(最坏O(n^2) 这也是严重缺点之一)3.要尽量保证输入的元素是基本无序的,因为在有序情况下,其时间复杂度是O(n^2)4.不稳定5.与归并排序一样是分治法的经典算法Code:class Sort: @classmethod def sort(cls, arr): cls.sortQuick(原创 2016-04-12 20:33:24 · 335 阅读 · 1 评论 -
狸猫的笔试——集合
1.计算1+2+3+……+n。不使用乘法。分析:这道题有三种思路。1.用for循环从一加到n。虽然简单,但是时间最长。2.根据等差数列公式有 (1+n)*n/2 = sum,化简得 (n + n^2) >> 1 = sum.虽然最简单,时间也短,但是使用了次方。3.依然基于等差数列求和。例如。1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +9 首尾相加有1原创 2016-08-26 15:49:18 · 897 阅读 · 0 评论 -
排序算法
排序算法的基本概念 根据排序过程中待排序文件存放的位置不同,可以把排序分为内部和外部排序两大类。在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。内部排序适用于记录个数不很多的较小待排序文件的排序;外部排序则适用于记录个数太多不能一次全部放入内存的较大待排序文件的排序。原创 2016-09-07 20:08:38 · 309 阅读 · 0 评论