python算法——第四天
2016-01-25 14:54
721 查看
一.递归
二.二叉算法
三. 多维数组交叉
def func(num): if num / 2 > 0: num -= 1 print(num) num = func(num) print('quit') return num func(10)
二.二叉算法
def binary_search(data_list,find_num): mid_pos = int(len(data_list) / 2) # 计算需要查找数据的长度的一半 mid_val = data_list[mid_pos] # 获取中间位置的那个值 print(data_list) # 查看每次剩余筛选的数据列表 if len(data_list) > 0: # 当列表长度大于0时,则一直查找 if mid_val > find_num: # 如果中间的数比实际要查找的数大,那么这个数肯定在左边 print("%s should be in left of [%s]" % (find_num, mid_val)) binary_search(data_list[:mid_pos], find_num) elif mid_val < find_num: # 如果中间的数比实际查找的数小,那么这个数肯定在右边 print("%s should be in right of [%s]" % (find_num, mid_val)) binary_search(data_list[mid_pos:], find_num) else: # 如果中间数与实际查找的数恰巧相等,那么这个数肯定是要找的拿个数 print("Find %s" % find_num) else: # 否则就是买药这个数 print("cannot find [%s] in data_list" % find_num) if __name__ == '__main__': primes = [1, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] binary_search(primes, 1) # 在列表里面查找1
三. 多维数组交叉
array = [[col for col in range(4)] for row in range(4)] # 初始化一个4*4数组 # array=[[col for col in 'abcd'] for row in range(4)] for row in array: # 旋转前先看看数组长啥样 print(row) for i, row in enumerate(array): for index in range(i, len(row)): tmp = array[index][i] # 将每一列数据在每一次遍历前,临时存储 array[index][i] = array[i][index] # 将每一次遍历行的值,赋值给交叉的列 print(tmp, array[i][index]) # = tmp array[i][index] = tmp # 将之前保存的交叉列的值,赋值给交叉行的对应值 for r in array: # 打印每次交换后的值 print(r)
相关文章推荐
- Python基本语法
- Python――几款流行ORM框架(SQLAlchemy ,Django ORM)
- python多线程与多进程 超简单使用
- 基于python unitest架构的接口自动化监控
- 使用python打印所有汉字
- Python常用lib
- Python获取目录、文件的注意事项
- 45. Jump Game II leetcode python 2016 new season
- Python 基础【二】 上
- 《Python项目开发实战》--熟悉Python基础后我能做什么?
- python分布式进程
- Python -- collection 系列
- Python 字符编码学习-ascii编码,Unicode和UTF-8之间的关系
- Python开发基础-day2
- Python 基础教程
- Python 爬虫入门(二)—— IP代理使用
- 为什么python运行的慢
- Python IDE(集成开发环境)汇总
- python set集合
- Python开发如何在ubuntu 15.10 上配置vim