用Python语言实现顺序查找和折半查找
时间: 2023-07-18 07:47:36 浏览: 90
好的,我可以帮你回答这个问题。
首先,顺序查找也叫线性查找,是指从数据的第一个元素开始逐个比较,直到找到目标元素为止。代码如下:
```python
def linear_search(array, target):
for i in range(len(array)):
if array[i] == target:
return i
return -1
```
折半查找也叫二分查找,是指在有序数组中通过比较中间元素的值来确定目标元素的位置。如果中间元素的值大于目标元素,那么在左半部分继续查找;如果中间元素的值小于目标元素,那么在右半部分继续查找。代码如下:
```python
def binary_search(array, target):
low = 0
high = len(array) - 1
while low <= high:
mid = (low + high) // 2
if array[mid] == target:
return mid
elif array[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
```
以上是用 Python 语言实现顺序查找和折半查找的代码。希望对你有帮助!
相关问题
用python语言实现顺序查找和折半查找
顺序查找:
顺序查找也叫线性查找,是一种简单的查找方法,从头到尾依次遍历待查找的元素,直到找到目标元素或遍历完整个序列。以下是用Python实现顺序查找的代码:
```python
def sequential_search(seq, target):
for i in range(len(seq)):
if seq[i] == target:
return i
return -1
```
其中,seq是待查找的序列,target是目标元素。函数返回目标元素在序列中的下标,如果找不到则返回-1。
折半查找:
折半查找也叫二分查找,是一种高效的查找方法,适用于有序序列。每次将待查找区间缩小一半,直到找到目标元素或区间为空。以下是用Python实现折半查找的代码:
```python
def binary_search(seq, target):
left, right = 0, len(seq) - 1
while left <= right:
mid = (left + right) // 2
if seq[mid] == target:
return mid
elif seq[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
其中,seq是有序序列,target是目标元素。函数返回目标元素在序列中的下标,如果找不到则返回-1。
用python写顺序查找和折半查找
顺序查找(线性查找):
```python
def linear_search(arr, x):
for i in range(len(arr)):
if arr[i] == x:
return i
return -1
```
折半查找(二分查找):
```python
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
return -1
```
阅读全文