1.冒泡排序法
Num=[18,8,7,2,3,6,1,1]
i=0
compare=0 #比较元素初始值
Num_len=len(Num) #获取列表长度
while i<Num_len:
j=1 #循环控制变量
while j<Num_len-i: #循环一遍长度-1
if Num[j-1]>Num[j]:
compare=Num[j-1]
Num[j-1]=Num[j]
Num[j]=compare
j+=1
i+=1
print(Num)
#打印结果[1, 1, 2, 3, 6, 7, 8, 18]
2.二分查找法(需为有序集合)
Num=[1,1,2,3,6,7,8,18]
low=0
high=len(Num)-1 #上下界
find_value=8
find_OK=False #True为找到元素
i=1 #统计查找次数
while low<high:
middle=int((low+high)/2) #int取整避免浮点数
if find_value==Num[middle]:
find_OK=True #设置找到标志为True
break
elif find_value>Num[middle]: #未找到,要找的范围大于中位值时
low=middle+1
elif find_value<Num[middle]: #未找到,要找的范围小于中位值时
high=middle-1
i+=1
if find_OK:
print("%d在列表下标%d处查找了%d次" %(find_value,middle,i))
else:
print("要找的数%d没有,找了%d次" %(find_value,i))