二分查找
def binary_search(target_list, target_node):
start_index, end_index = 0, len(target_list)
while True:
if end_index - start_index <= 1:
if target_node == target_list[start_index]:
return start_index
elif target_node == target_list[end_index]:
return end_index
else:
return -1
temp_index = (end_index + start_index) // 2
if target_list[temp_index] >= target_node:
end_index = temp_index
else:
start_index = temp_index
青蛙跳台阶
递归题解
def feibo(n):
if n <= 3:
return n
return feibo(n-1) + feibo(n -2)
动态规划题解
def feibo_2(n):
temp_list = [0] * (n +1)
if n == 0:
return 0
elif n == 1:
temp_list[n] = 1
return 1
elif n == 2:
temp_list[1] = 1
temp_list[n] = 2
return 2
else:
temp_list[1] = 1
temp_list[2] = 2
for i in range(3, n+1):
temp_list[i] = temp_list[i-1] + temp_list[i-2]
return temp_list[n]
判断素数
def check_num(n):
if n < 1:
return "既不是质数也不是合数"
for i in range(2, n):
if n % i == 0:
return "合数"
return "质数"
def check_num_2(n):
if n < 1:
return "既不是质数也不是合数"
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return "合数"
return "质数"
返回当前文件夹及其子文件夹里面的所有文件地址
import os
def get_dir_sub_file_path_list(target_dir_path, is_only_return_file_name=False, all_sub_file_path_list=[]):
if os.path.isfile(target_dir_path):
if is_only_return_file_name:
# # 若只是要返回文件文,使用这个
all_sub_file_path_list.append(os.path.basename(target_dir_path))
else:
all_sub_file_path_list.append(target_dir_path)
elif os.path.isdir(target_dir_path):
for s in os.listdir(target_dir_path):
# 如果需要忽略某些文件夹,使用以下代码
# if s == "xxx":
# continue
get_dir_sub_file_path_list(os.path.join(target_dir_path, s), is_only_return_file_name=is_only_return_file_name, all_sub_file_path_list=all_sub_file_path_list)
return all_sub_file_path_list
冒泡排序
def bubble_sort(alist):
"""冒泡排序"""
alist_len = len(alist)
for j in range(0, alist_len-1):
# j表示每次遍历需要比较的次数,是逐渐减小的
for i in range(alist_len - j - 1):
if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
return alist