您的位置:首页 > 编程语言 > Python开发

Python 实现查找的几种类型 (线性查找,线性有序查找,线性查找最小值,二分查找)

2015-01-15 15:11 555 查看
#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
Created on 2015-1-15
@author: beyondzhou
@name: mysearch.py
'''

# Implementation of the linear search on an unsorted sequence
def linearSearch(theValues, target):
n = len(theValues)
for i in range(n):
# If the target is in the ith element, return True
if theValues[i] == target:
return True
return False   # If not found, return False

# Implemenation of the linear search on a sorted sequence
def sortedLinearSearch(theValues, item):
n = len(theValues)
for i in range(n):
# If the target is found in the ith element, return True
if theValues[i] == item:
return True
# If target is larger than the ith element, it's not in the sequence
elif theValues[i] > item:
return False

return False

# Searching for the smallest value in an unsorted sequence
def findSmallest(theValues):
n = len(theValues)
# Assume the first item is the smallest value
smallest = theValues[0]
# Determine if any other item in the sequence is smaller
for i in range(1,n):
if theValues[i] < smallest:
smallest = theValues[i]

return smallest

# binary search
def binarySearch(theValues, target):
# Start with the entire sequence of elements
low = 0
high = len(theValues) - 1

# Repeadedly subdivide the sequence in half until the target is found
while low <= high:
# Find the midpoint of the sequence
mid = (high + low) // 2
# Does the midpoint contain the target?
if theValues[mid] == target:
return True
# Or does the target precede the midpoint?
elif target < theValues[mid]:
high = mid - 1
# Or does it follow the midpoint?
else:
low = mid + 1

# If the sequence cannot be subdivided further, we're done
return False
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: