📅  最后修改于: 2023-12-03 15:08:01.187000             🧑  作者: Mango
在对未排序的数组进行排序时,我们有时需要查找数组中某个元素首次出现的位置。这个需求一般在二分查找等算法中用到。本文将介绍两种方法来实现查找首次出现的索引。
最简单的实现方法就是采用线性查找。具体思路如下:
该方法的时间复杂度为 O(n),空间复杂度为 O(1)。
以下是该方法的示例代码(Python):
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
更高效的实现方法是采用二分查找。该方法的基本思路如下:
该方法的时间复杂度为 O(nlogn),空间复杂度为 O(1)。
以下是该方法的示例代码(Python):
def binary_search(arr, target):
arr.sort() # 对数组进行排序
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] < target:
left = mid + 1
elif arr[mid] > target:
right = mid - 1
else: # 找到目标元素,向左遍历
while mid > 0 and arr[mid - 1] == target:
mid -= 1
return mid
return -1
以上是两种实现查找首次出现索引的方法,具体使用时可根据自己的需求选择适合的方法。