python实现查找和排序
学习python的同时顺便复习数据结构。
🙌没人
👐比我
👌更懂
👆复习😜
未完待续。。。
顺序查找
折半查找
def binary_search(nums, key):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == key:
# 返回索引位置
return mid
elif nums[mid] < key:
left = mid + 1
elif nums[mid] > key:
right = mid - 1
return -1 # 没有找到返回 -1
if name == 'main':
lis = [2, 3, 4, 5, 5, 5, 6, 7, 23, 45, 90]
print(binary_search(lis, 110))
分块查找
直接插入排序
折半插入排序
希尔排序
冒泡排序
相信冒泡排序已经被大家所熟知,下面的代码对冒泡排序进行了简单优化。
def bubble_sort(nums):
for i in range(len(nums) - 1):
ex_flag = False
for j in range(len(nums) - 1 - i):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
ex_flag = True
if not ex_flag:
return nums
return nums
if __name__ == '__main__':
lis = [2, 4, 5, 6, 7, 3, 5, 90, 45, 23, 5]
print(bubble_sort(lis))
快速排序
简单选择排序
def select_sort(nums):
for i in range(len(nums)):
nums_min = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[nums_min]:
nums_min = j
nums[i], nums[nums_min] = nums[nums_min], nums[i]
return nums
if name == 'main':
lis = [2, 4, 5, 6, 7, 3, 5, 90, 45, 23, 5]
print(select_sort(lis))
堆排序
归并排序
基数排序
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果