Python 斐波那契数列, 二分法查找 , 冒泡排序
def func(arg1, arg2,stop): if arg1 == 0: print(arg1,arg2) arg3 = arg1 + arg2 print(arg3) if arg3 < stop: func(arg2,arg3,stop) func(0,1,300)
斐波那契数列 第一个数 + 第二个数 = 第三个数。 一直循环
二分法查找。
def search(data_source, find_n): mid = int(len(data_source)/2) if len(data_source) >= 1: if data_source[mid] > find_n: print('data in left of [%s]'% data_source[mid]) search(data_source[:mid], find_n) elif data_source[mid] < find_n: print('data in right of [%s]'% data_source[mid]) search(data_source[mid:], find_n) else: print('found find_s', data_source[mid]) else: print('cannot find') if __name__ == "__main__": data = list(range(1,5000)) search(data,4001)
首先对 列表 进行 除2 , 然后进行比较大小,大于取左边,然后对列表进行切片[:mid], 小于取右边,然后对列表进行切片[mid:], 如此循环。
对列表进行除2 时 使用 len 。
冒泡排序法
data = [2,3,4,23,4324,5,6,7,435,43543,2,234,423,66,88,999,1,9999] for j in range(1,len(data)): # len 从1开始, 每次循环都递减1次,因为 每次循环都会将 最大的值 排序到最后。 for i in range(len(data)-j): # 循环 range 列表 的 len - j j = 循环的次数, 可减少 循环次数。 if data[i] > data[i+1]: # 第一个数 与 第二个数 做比较, 如果 第一个比第二个大 走下一步 tmp = data[i+1] # tmp = data[i+1] 让 tmp 临时 等于 第二个数 data[i+1] = data[i] # data[i+1] 第二个数 替换成 第一个 数 data[i] = tmp # 第一个数 替换成 tmp 。 print(data)

浙公网安备 33010602011771号