用python实现在1-30之间搜索19

一、醉汉回家模型

2bd9f22e36d2443c8eb30c7e1b87df3e.png

import random   # 导入random包
list1 = list(range(1, 31))      # 创建一个list列表


def find(list):
    x = int(input("输出初始位置:"))       # 初始位置
    y = int(input("输入目标位置:"))       # 目标位置
    while 1:
        flag = random.randint(0, 1)
        step = 1 if flag else -1        # 条件判断,前进或者后退的条件
        x = x + step                    # 前进
        if x < 0:
            x += 1
        if x > len(list):
            x -= 1
        if (list[x] == y):
            print("数字的索引是" + str(x))
            break


find(list1)


二、普通搜索(线性搜索)

c677fda7c63b4f0386757076fee13b0a.png

li = list(range(1, 31))


def search(li, n, x):   # 参数li数组,n数组长度,x要查找的数字
    for i in range(0, n):       # for循环,范围为0到数组的长度
        if (li[i] == x):        # i为索引
            return i            # 返回索引i
    return -1


n = len(li)
x = int(input("请输入要查找的数字:"))
result = search(li, n, x)       # 调用方法search
if (result == -1):              # 只要result等于-1
    print("元素不在数组中")        # 打印
else:
    print("元素在数组中的索引为", result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值