随笔分类 -  012 算法

摘要:import math def radixSort(list, radix = 10): ''' math.ceil 为x取整,结果是不小于x的最小整数. math.log(x, a) 返回 log 以 a 为底 x 的对数,若不给定 a 则底默认为 e ''' k = int(math.ceil(math.log(max(list), radix))) ... 阅读全文
posted @ 2017-09-08 21:55 Thinkando 阅读(308) 评论(0) 推荐(0) 编辑
摘要:''' 希尔排序: 将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列来进行。 最后整个列表就只有一列了。 ''' import time start1 = time.time() def shell_sort(alist): n = len(alist) # 初始步长 gap = n//2 while gap >0: # 按步长进行插入排序 for i... 阅读全文
posted @ 2017-09-08 16:58 Thinkando 阅读(211) 评论(0) 推荐(0) 编辑
摘要:''' 快速排序 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据 都要小,然后再按此方法对这两部分数据分别进行快速排序,整个过程可以递归进行,以此达到整个数据 变成有序序列 ''' import time start = time.time() def quick_sort(alist, start, end): # 递归的退出条件 i... 阅读全文
posted @ 2017-09-08 15:49 Thinkando 阅读(234) 评论(0) 推荐(0) 编辑
摘要:''' 插入排序:通过构建有序序列,对于未排序的数据, 在已排序列中从后向前扫描,找到相应的位置并插入 ''' import time start = time.time() def insert_sort(alist): # i 从第二个开始遍历[9,8,7,6,5,4,3,2,1] for i in range(1, len(alist)): #比较顺序,[... 阅读全文
posted @ 2017-09-08 14:10 Thinkando 阅读(219) 评论(0) 推荐(0) 编辑
摘要:'''选择排序, 找到最大或最小的,放一边,然后继续找''' import time start = time.time() def selectionSort(alist): for i in range(len(alist)-1): min_index = i for j in range(i+1,len(alist)): if alist[min_index]> alis... 阅读全文
posted @ 2017-09-08 12:55 Thinkando 阅读(236) 评论(0) 推荐(0) 编辑
摘要:'''冒泡排序:比较相邻的元素,如果第一个比第二个大,就交换位置''' import time start = time.time() def bubble_sort (alist): # 从8-0遍历,step = -1,倒着来. for j in range (len(alist)-1,0,-1): # j = 8,7,6,5,4,3,2,1 ... 阅读全文
posted @ 2017-09-08 12:52 Thinkando 阅读(267) 评论(0) 推荐(0) 编辑
摘要:PCA的数学原理(转) 1 年前 PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程 阅读全文
posted @ 2017-07-25 19:04 Thinkando 阅读(392) 评论(0) 推荐(0) 编辑