python算法——第四天

  一.递归

1 def func(num):
2     if num / 2 > 0:
3         num -= 1
4         print(num)
5         num = func(num)
6         print('quit')
7     return num
8 
9 func(10)

  二.二叉算法

 1 def binary_search(data_list,find_num):
 2     mid_pos = int(len(data_list) / 2)  # 计算需要查找数据的长度的一半
 3     mid_val = data_list[mid_pos]  # 获取中间位置的那个值
 4     print(data_list)  # 查看每次剩余筛选的数据列表
 5     if len(data_list) > 0:  # 当列表长度大于0时,则一直查找
 6         if mid_val > find_num:  # 如果中间的数比实际要查找的数大,那么这个数肯定在左边
 7             print("%s should be in left of [%s]" % (find_num, mid_val))
 8             binary_search(data_list[:mid_pos], find_num)
 9         elif mid_val < find_num:  # 如果中间的数比实际查找的数小,那么这个数肯定在右边
10             print("%s should be in right of [%s]" % (find_num, mid_val))
11             binary_search(data_list[mid_pos:], find_num)
12         else:  # 如果中间数与实际查找的数恰巧相等,那么这个数肯定是要找的拿个数
13             print("Find %s" % find_num)
14 
15     else:  # 否则就是买药这个数
16         print("cannot find [%s] in data_list" % find_num)
17 
18 if __name__ == '__main__':
19     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]
20     binary_search(primes, 1)   # 在列表里面查找1

   三. 多维数组交叉

 1 array = [[col for col in range(4)] for row in range(4)]  # 初始化一个4*4数组
 2 # array=[[col for col in 'abcd'] for row in range(4)]
 3 
 4 for row in array:  # 旋转前先看看数组长啥样
 5     print(row)
 6 
 7 for i, row in enumerate(array):
 8 
 9     for index in range(i, len(row)):
10         tmp = array[index][i]  # 将每一列数据在每一次遍历前,临时存储
11         array[index][i] = array[i][index]  # 将每一次遍历行的值,赋值给交叉的列
12         print(tmp, array[i][index])  # = tmp
13         array[i][index] = tmp  # 将之前保存的交叉列的值,赋值给交叉行的对应值
14     for r in array:  # 打印每次交换后的值
15         print(r)

 

你可能感兴趣的:(python算法——第四天)