常见的数据查找算法:
顺序查找、二分查找、深度优先遍历、广度优先遍历、哈希查找
哈希查找算法由于其查找速度快,查询、插入删除操作简单等原因被广泛使用。
冲突:多个关键字映射到同一个值的现象。
例子:查找两个数的和
nums = [3, 5, 4, 7, 10]
target = 11
def twoSum(nums, target): //双指针方法
res = []
newnums = nums[:]
newnums.sort()
left = 0
right = len(newnums)-1
while left < right:
if newnums[left] + newnums[right] == target:
for i in range(0, len(nums)):
if nums[i] == newnums[left]:
res.append(i)
break
for i in range(len(nums)-1, -1, -1):
if nums[i] == newnums[right]:
res.append(i)
break
res.sort()
break
elif newnums[left] + newnums[right] < target:
left = left + 1
elif newnums[left] + newnums[right] > target:
right = right -1
return (res[0]+1, res[1]+1)
def twoSum2(num, target) : #哈希方法
dict = {}
for i in range(len(nums)):
m = nums[i]
if target - m in dict:
return (dict[target-m]+1, i+1)
dict[m] = i
print(twoSum(nums, target))
print(twoSum2(nums,target))