python实现冒泡、选择、插入、二分法、顺序查找算法
冒泡排序
规则:每次从索引0的位置开始,取元素进行两两进行比较,将较大者向后移,一直到最值对应的位置。
遍历的次数是列表的长度-1次
每次遍历的元素个数 = 列表长度-当前遍历的次数
#降序
list0 = [56,28,31,15,29,42]
for i in range(1,len(list0)):
for j in range(0,len(list0)-i):
if list[j] > list[j+1]:
list[j],list[j+1] = list[j+1],list[j]
print(list0)
选择排序
规则:每次都有一个固定的位置,将该固定位置的元素与之后的每一个元素进行比较。
如果前者大于后者,交换位置。每一次遍历都会取到列表结尾得数据。但是起始位置不一样了。
外层循环控制遍历的次数=len(列表) -1
list0 = [56,28,15,31,29]
for i in range(0,len(list0)):
for j in range(i+1,len(list0)):
if list0[i] > list0[j]:
list0[i],list[j]=list[j],list[j]
print(list0)
插入排序
规则:从后向前排,会出现部分有序,较少比较次数,提高效率第一次从脚标为0的元素进行比较。
list = [25,65,,98,41,52,75]
for i in range(1,len(list)):
for j in range(i,0,-1)
if list[j] > list[j-1]:
list[j],list[j-1] = list[j-1],list[j]
else:
break
print(list)
顺序查找
list0 = [12,19,27,38,51,22,12]
key_ele = int(input('请输入要查找的元素:'))
for i in range(len(list0)):
if list0[i] == key_ele:
print('找到元素了,位置在',i)
else:
print('没找到')
二分法查找
前提列表顺序必须是排好序的
设定初始查找范围,根据索引设定,获取中间值,判断查找的元素与中间索引
对应的元素是否一致。
list = [17,22,27,33,38,45,59]
key_ele = int(input('请输入要查找的元素:'))
min_index = 0
max_index = len(list) - 1
mid_index = (min_index + max_index) // 2
while key_ele != list[mid_index]:
if key_ele > mid_index:
min_index = mid_index + 1
elif key_ele < list[mid_index]:
max_index = mid_index - 1
if max_index > mid_index:
mid_index = (min_index + max_index) // 2
else:
print('查无此元素')
breaK
else:
print('找到了,位置在',mid_index)
二维列表
定义:list = [[],[],[]…]
1、求二维列表中所有一维列表中元素的和
total = 0
for sub_list in list:
for ele in sub_list:
total += ele
print(total)
2、求每个小列表中元素的和
for i in range(len(list)):
total = 0
for ele in list:
total += ele
print(total)