#!/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
Python 实现查找的几种类型 (线性查找,线性有序查找,线性查找最小值,二分查找)
最新推荐文章于 2024-02-20 12:00:00 发布