排序

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))
posted @ 2020-11-13 13:31  17。  阅读(47)  评论(0)    收藏  举报