一.希尔排序 shell_sort def insert_sort_gap(li,gap): for i in range(gap,len(li)): tem = li[i] # 要插入的数 j = i-gap # j指的是手里的牌的下标 while li[j] > tem and j>=0: li[j+gap] = li[j] j -= gap li[j+gap] = tem def shell_sort(li): d = len(li)//2 while d>=1: insert_s…
python所有对象引用计数被减少1的情况: 一.对象的别名被赋予新的对象; a = 23345455 # 增加了一个引用 b = a # 增加了一个引用 print(sys.getrefcount(a)) b = 1.4 # 减少了一个23345455整数的引用 print(sys.getrefcount(a)) 结果:3:2 二.对象的别名被显式销毁; a = 23345455 # 增加了一个引用 b = a # 增加了一个引用 list = [a, b] # 增加了2个引用 del a p…
Python将科学计数法数值转换为指定精度浮点数 In [20]:money = 1190000.0 In [21]: traded_maket_value = 13824000000 In [22]: money / traded_maket_value Out[22]: 8.608217592592592e-05 In [23]: '{:.10f}'.format( money / traded_maket_value) Out[23]: '0.0000860822'…
希尔排序 希尔排序是一个叫希尔的数学家提出的一种优化版本的插入排序. 首先取一个整数d1=n//2,将元素分为d1个组,每组相邻元素之间的距离为d1,在各组内进行直接插入排序. 取第二个整数d2=d1//2,重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序. 希尔排序是使整体数据越来越接近有序:最后一趟排序使得所有数据有序. 实现 # 希尔排序 def shell_sort(li): n = len(li) gap = n // 2 while gap > 0: for…
一.概述 要保持追踪内存中的对象,Python使用了引用计数这一简单的技术. 二.引用计数的增减 2.1 增加引用计数 当对象被创建并(将其引用)赋值给变量时,该对象的引用计数被设置为1. 对象的引用计数增加的情况: 对象被创建:x = 3.14 另外的别名被创建:y = x 被作为参数传递给函数(新的本地引用):foobar(x) 成为容器对象的一个元素:myList = [123, x, 'xyz'] 2.2 减少引用计数 对象的引用计数减少的情况: 一个本地引用离开了其作用范围.如foob…
1,对于list列表来说 a.用自定义函数来统计技术 def get_count(sequence): counts={} for x in sequence: if x in sequence: count[x] +=1 else: count[x] =1 return counts 或者利用python标准库 from collections import defaultdict def get_counts(sequence): counts = defaultdict(int)#所有的值…
八.基数排序 基本思想:基数排序(radix sort)属于"分配式排序"(distribution sort),又称"桶子法"(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些"桶"中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法. 算法实现: #coding:…
希尔排序: 观察一下”插入排序“:其实不难发现她有个缺点: 如果当数据是”5, 4, 3, 2, 1“的时候,此时我们将“无序块”中的记录插入到“有序块”时,估计俺们要崩盘, 每次插入都要移动位置,此时插入排序的效率可想而知. shell根据这个弱点进行了算法改进,融入了一种叫做“缩小增量排序法”的思想,其实也蛮简单的,不过有点注意的就是: 增量不是乱取,而是有规律可循的. 希尔排序时效分析很难,关键码的比较次数与记录移动次数依赖于增量因子序列d的选取,特定情况下可以准确估算出关键码的比较次数和…
基数排序算法是一种是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较. 由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数.基数排序的发明 可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine)上的贡献. 它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零.然后,从最低位开始, 依次进行一次排序.这样从最低位排序一直到最高位排序完成以后,数列就变…
以下实例展示了 count() 方法的使用方法: 1 2 3 4 5 6 # !/usr/bin/python3   T = (123, 'Google', 'Runoob', 'Taobao', 123);   print ("123 元素个数 : ", T.count(123)) print ("Runoob 元素个数 : ", T.count('Runoob')) 以上实例输出结果如下: 1 2 123 元素个数 :  2 Runoob 元素个数 :  1 1…