浅谈数据的搜索和排序

1. 引言

作为一名数据分析师,当然离不开数据结构中的重要概念——搜索和排序。

了解各类排序和搜索算法,可以帮助我们在工作中选择排序和搜索方式时,不仅要考虑数据的特点,还要考虑计算资源。接下来,我们就来简单地用Python代码介绍几种数据搜索和数据排序方法。

2. Python的代码实现

2.1 数据搜索

2.1.1 顺序搜索

Python列表的特点之一就是每一个元素都有自己的位置,数据项的位置就是它的下标。因为下标是有序的,所以能够有序访问每个元素,由此可以进行顺序搜索。顾名思义,顺序搜索将会从列表中最开始的位置开始按照顺序逐个查看,直到找到目标元素或查完列表为止。

##此函数接受列表与目标元素作为参数, 并返回一个表示目标元素是否存在的布尔值。
def sequential_Search(alist, item):
    pos = 0
    found = False
    while pos < len(alist) and not found:
        if alist[pos] == item:
            found = True
        else:
            pos = pos + 1 
    return found

其实,计算机在分析搜索算法前,需要定义计算的基本单元。每一次比较只有两种结果,找到或没有找到。在这我们做了一个假设,即元素的排列是无序的,换言之,目标元素位于每个位置的可能性是一样大的。如果是有序排列,那么计算资源就会随目标元素在列表中的位置而变化。

2.1.2 二分搜索

与顺序搜索不一样的是,二分搜索不是从第一个位置开始搜索列表,而是从中间元素着手。如果这个元素就是目标元素,那就立即停止搜索;如果不是,则可以利用列表有序的特性,排除一半的元素。

针对右(左)半部分重复二分过程。从中间元素着手,将其和目标元素比较。同理,要么直接找到目标元素,要么根据比较结果将右(左)半部分一分为二,再次缩小搜索范围。

## 有序列表的二分搜索
def binary_Search(alist,item):
    first = 0
    last = len(alist) - 1
    found = False

    while first <= last and not found
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值