算法练习
王培军
Keep writing code
展开
-
python练习(10)——矩阵非常规打印
'''10、打印矩阵外圈1 2 6 73 5 8 134 9 12 1410 11 15 16打印顺序为1,2,6,7,13,14,16,15,11,10,4,3挑战题:打印矩阵元素1 2 6 7 153 5 8 14 16 4 9 13 17 2210 12 18 21 2311 19 20 24 25之字形打印结果为1,2,3,4,5,6,7,8...原创 2018-04-14 19:51:27 · 1215 阅读 · 0 评论 -
python练习(6)——统计重复数和非重复数,列表,字典
#随机生成若干数字 统计重复数和非重复数,按顺序输出 ||例50个[100,200]的数import random#lst = [randome.randint(100,200) for i in range(50)] 同append,效率比乘法*一次开辟空间慢lst = [0]*50for i in range(50): lst[i] = random.randint(1...原创 2018-04-04 12:28:05 · 2214 阅读 · 0 评论 -
python练习(5)——列表,去重,冒泡法
# 输入一个数字,输出每一位数字重复几次 ##数字的个数很有限(10个)# 列表也可以看作是一种字典,索引也可以记录信息,import randomn = random.randint(1,100000)print(n)counter = [0]*10for i in str(n): x = int(i) counter[x] += 1for i in r...原创 2018-03-31 21:24:32 · 302 阅读 · 0 评论 -
python练习(4)——打印杨辉三角
#杨辉三角,后面补1,中间计算累加次数n = 6triangle = []for i in range(n): row = [1] triangle.append(row) if i == 0: continue pre = triangle[i-1] for j in range(1,i): row.append(p...原创 2018-03-28 11:29:50 · 1398 阅读 · 0 评论 -
python练习(3)——菲波那切数列,求10万以内素数优化
# 斐波那契数列,a,b = b,a+bfirst = 0second = 1cnt = 2for i in range(101-2): mid = first + second cnt += 1 first = second second = midprint(mid) # 素数# 求10万以内所有的素数,优化,筛法ceil(sqrt)开...原创 2018-03-25 10:57:29 · 293 阅读 · 0 评论 -
python练习(2)——菱形,九九乘法表
# 打印正方形# 三种状态分别逐行打印sideLen = int(input('>>>')) # 不要用小驼峰命名变量print('*'*sideLen)for i in range(sideLen-2): print('*',' '*(sideLen-2),'*',sep='')print('*'*sideLen)# 两种状态逐行打...原创 2018-03-25 10:49:00 · 1253 阅读 · 0 评论 -
python练习(1)——求数字位数,数字正序倒序输出
# 输入若干个数,打印最大值(考虑负数,非用户输入数慎用)# max = 0max = int(input('>>>'))while True: inp = int(input('>>>')) if not inp: # 输入0结束 break else: if inp >= max:...原创 2018-03-25 10:45:21 · 4719 阅读 · 0 评论 -
python练习(14)——使用栈实现eval函数的部分功能(加减乘除,括号运算, 负号)
# 定义优先级,运算符与函数建立映射 opes_level = {'(': -1, ')': -1, '-': 0, '+': 0, '/': 1, '*': 1}opr_func = {'+': lambda x, y: x + y, '-': lambda x, y: x - y, '/': lambda x, y: x / y, '*': lambda x, y: x * y}ope...原创 2018-08-29 00:17:20 · 1024 阅读 · 0 评论 -
二分法 python
def bisection_right(a, x): lo = 0 hi = len(a) while hi > lo: mid = (hi+lo)//2 if a[mid] > x: hi = mid else: # x >= a[mid] ...原创 2018-05-12 17:55:24 · 265 阅读 · 0 评论 -
python练习(13)——字典扁平化,组合总数,函数递归练习
# 有用的数据最后记录在target默认值中,返回def flatdict(dic, target=None, prefix=''): if target is None: target = {} for k, v in dic.items(): if isinstance(v, dict): flatdict(v, ta...原创 2018-05-01 20:05:00 · 640 阅读 · 0 评论 -
python练习12)——最长公共子串
# 两个字符串相对而行,取重合部分看重复情况# start:# s1 aaaaaaaa# s2 bbbbbbbb# end:# s1 aaaaaaaa# s2 bbbbbbbbdef taiLongestSubstring(s1, s2): """连个字符串左对齐,取最长的公共子串,子串索引也相同""" if len(s1) > l...原创 2018-05-01 18:19:31 · 423 阅读 · 0 评论 -
python练习(11)——若干个数,组成若干位,无重复数字
# 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?def nums(): nums = [] for i in range(1,5): for j in range(1,5): if j != i: for k in range(1,5): ...原创 2018-04-15 16:42:16 · 259 阅读 · 0 评论 -
python练习(9)——练习题猴子桃子,7个数字组成的奇数。。。
# 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数,//m=3nums = [1,2,3,4,5,6,7,8,9,0]chnums = nums[3:]chnums.extend(nums[0:3])print(chnums)#第二种方法,移位m = 3for i in range(m): last = nums[-1] for j ...原创 2018-04-07 21:46:12 · 675 阅读 · 0 评论 -
python练习(8)——简单选择排序,列表解析式使用(格式化输出杨辉三角,九九乘法表)
# 简单选择排序法b = [3,4,2,1,6,4,6,7]for i in range(len(b)): maxindex = i for j in range(i+1,len(b)): if b[maxindex] < b[j]: maxindex = j if maxindex != i: b[i],...原创 2018-04-04 20:55:30 · 563 阅读 · 0 评论 -
十一种经典排序算法, python3实现
首先要感谢算法的发明者, 要不是他们想的这么精妙的算法, 我也不会到现在还在头疼交换排序冒泡排序梳排序快速排序选择排序简单选择排序堆排序插入排序简单插入排序希尔排序归并排序分配排序计数排序桶排序基数排序完整的测试效率比较代码交换排序冒泡排序两两比较, 并交换位置, 直到末尾。排除末尾数字, 重复1步骤, 直到只剩下...原创 2018-08-15 13:56:13 · 796 阅读 · 0 评论 -
python练习(7)——构建矩阵,反转矩阵
# 生成[[1,2,3],[4,5,6],[1,2,3],[4,5,6].......]lst = [[1,2,3],[4,5,6]]c = [lst.extend(lst) for j in range(3)] # 2**nd = [[1,2,3] if not i&1 else [4,5,6] for i in range(6)] #/2print(c)print(d...原创 2018-04-04 15:02:48 · 346 阅读 · 0 评论