学习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))

堆排序

归并排序

基数排序