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