猜你感兴趣的Python简单查找算法,轻松易懂

一、顺序查找

顺序查找也称为线性查找,是所有查找算法中最简单的,一般用于线性表的查找。

简而言之,就是从下标为0的元素开始进行逐一查找,直到列表中最后一个元素。

顺序查找的优缺点:

  • 优点:对于列表没有排序的要求
  • 缺点:查找效率低

代码实现:

# 普通实现
num = eval(input('请输入一个数组:'))
sort_num = sorted(num)
user_num = int(input('请输入此次查找数字:'))
print(f'从小到大排序为:{sort_num}')

for index,i in enumerate(sort_num):
    if i == user_num:
        print(f'找到啦!!!   下标为:{index}')
else:
    print('很遗憾,没找到!!!')

上段代码第一行中的eval()是python的内置函数,当需要输入列表的时候使用

# 用函数实现
def seqSearch(alist, n):  # alist用来接收列表,n用来接收要查找的数字

    for index, i in enumerate(alist):
        if i == n:
            return index
    else:
        return None

num = eval(input('请输入一个数组:'))
sort_num = sorted(num)
user_num = int(input('请输入此次查找数字:'))
print(f'从小到大排序为:{sort_num}')

if seqSearch(sort_num, user_num):
    print(f'找到啦!!!   下标为:{seqSearch(sort_num, user_num)}')
else:
    print('很遗憾,没找到!!!')

两段代码中的enumerate()为python的内置函数,是枚举函数,输出结果中包含两部分:

  1. 第一部分------》元素的下标(索引)值
  2. 第二部分------》相对应的元素值

二、二分查找

二分查找也称为折半查找,相比较顺序查找,减少了查找次数、提高了查找效率。

二分查找的算法思想:

将列表中n个元素大致分成2个相等的部分,在python中,取得是 a[n//2] 与 要查找的数字(这里设为x)比较,如果相等,算法终止;如果不相等继续比较,当 a[n//2]大于x,则取前n//2个数据,当 a[n//2]小于x,则取后n//2个数据。以此类推,直至找到x。

总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。

注意:二分查找要求待查列表为有序的(从小到大排序,或者从大到小排序)

二分查找优缺点:

  • 优点
    • 比较次数减少
    • 查找效率高
  • 缺点
    • 列表插入删除困难

代码实现:

# 普通算法
def binary_search(data, alist):
    n = len(alist)
    start = 0
    end = n-1
    while start <= end:
        mid = (start + end) // 2
        if alist[mid] < data:
            start = mid + 1
        elif alist[mid] > data:
            end = mid - 1
        else:
            return True
    return False

num = eval(input('请输入一个数组:'))
sort_num = sorted(num)
user_num = int(input('请输入此次查找数字:'))
print(f'从小到大排序为:{sort_num}')
if binary_search(user_num, sort_num):
    print('找到啦!!!')
else:
    print('很遗憾,没找到!!!')

用递归实现:

 

def binary_search(data, alist):
    n = len(alist)
    while n > 0:
        mid = n // 2
        if alist[mid] < data:
            return binary_search(data, alist[mid+1:])
        elif alist[mid] > data:
            return binary_search(data, alist[:mid])
        else:
            return True, mid
    return False

num = eval(input('请输入一个数组:'))
sort_num = sorted(num)
user_num = int(input('请输入此次查找数字:'))
print(f'从小到大排序为:{sort_num}')
if binary_search(user_num, sort_num):
    print('找到啦!!!')
else:
    print('很遗憾,没找到!!!')

写的不好的地方请见谅!!!并且希望您指出不好的地方,我改正。

### 回答1: 《Python算法详解》是由张玲玲撰写的一本书籍,可以在优快云上下载获取。这本书的主要内容是探索使用Python编程语言解决各种算法问题的方法和技巧。 本书首先介绍了Python编程语言的基础知识,包括数据类型、循环结构、条件判断等,为读者打下了良好的编程基础。接着,书中深入讲解了各种常见的算法算法实现,包括贪心算法、动态规划、回溯法、分治法等。每一种算法都配有详细的案例和代码实现,帮助读者理解和掌握算法的核心思和解题方法。 除了介绍基础的算法知识,本书还介绍了一些高级的算法技巧,如图论、字符串匹配、排序算法等。对于这些更加复杂的算法问题,书中提供了一些常用的解题思路和方法,并给出了相应的代码实现。 《Python算法详解》以清晰简明的语言风格编写,适合初学者快速上手。同时,书中还穿插了一些编程技巧和优化技巧,可以帮助读者提高算法的效率和代码的质量。对于那些已经有一定编程经验的读者来说,这本书也可以作为一个算法参考手册,帮助他们解决实际问题。 总之,《Python算法详解》是一本内容丰富、实用性强的算法书籍,对于要提升算法编程能力的读者来说,是一本很好的学习材料。如果你对此书感兴趣,可以在优快云上下载获取。 ### 回答2: 《Python算法详解》的作者是张玲玲,这本书可以在优快云上下载到。这本书主要讲解了Python编程语言中的算法相关内容。算法是编程的核心,它是解决问题的方法和步骤的描述。通过学习算法,我们可以更高效地解决各种问题。 这本书讲解了Python编程语言中常见的算法和数据结构,例如排序算法算法、图算法等。它不仅介绍了这些算法的原理和思,还通过具体的代码示例演示了它们的实现过程。读者可以通过学习这些算法,提高自己的编程技术和解决问题的能力。 《Python算法详解》适合对Python编程有一定了解的读者阅读。无论是初学者还是有一定编程经验的人,都可以通过这本书进一步提高自己的算法水平。此外,这本书的风格简洁明了,易于理解。读者可以通过这本书系统地学习和掌握Python编程语言中的算法知识。 总之,《Python算法详解》是一本对于学习Python编程语言和算法的人来说非常有价值的书籍。它通过详细的讲解和实例演示,帮助读者理解和掌握Python中常用的算法和数据结构。读者可以通过阅读这本书,提高自己的编程水平,并有效地解决各种问题。 ### 回答3: 《Python算法详解》是由张玲玲所著的一本Python算法方面的教材,《Python算法详解》被很多人广泛称赞为一本内容丰富、观点独特的优秀著作。这本书通过深入浅出的方式,将算法相关的基本概念、原理和实践技巧生动地呈现给读者。 本书的作者张玲玲凭借其多年从事算法研究与开发的经验,为读者提供了一条领略算法之美的精彩之旅。她以通俗易懂的语言、详细的讲解和真实的案例,为读者阐述了算法的基本概念,比如递归、排序算法查找算法等,在阅读过程中不仅能够轻松理解这些算法的原理,更能够运用所学知识解决实际问题。 此外,书中还提供了丰富的算法示例和练习题,使读者能够在动手实践中加深理解。通过解决这些实际问题,读者能够培养自己的思维逻辑和编程能力,提升对算法的理解与运用。 总之,《Python算法详解》凭借其内容翔实、易读性强的特点,成为了Python学习者和算法爱好者的必备之作。读完本书,读者不仅能够对算法有更深入的理解,还能够在实际工作中应用所学知识,提高编程效率。强烈推荐这本书给那些对算法感兴趣的人,相信你们一定会从中受益匪浅!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢小牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值