📜  数据结构和算法 | 33套(1)

📅  最后修改于: 2023-12-03 15:40:01.651000             🧑  作者: Mango

数据结构和算法 | 33套

简介

本系列共包含33套数据结构和算法题目,涵盖了常见的数据结构和算法知识点,适用于程序员们的练习和学习。

内容
数据结构

本系列包含以下数据结构:

  • 数组
  • 链表
  • 队列
  • 散列表
算法

本系列包含以下算法:

  • 排序算法
    • 冒泡排序
    • 选择排序
    • 插入排序
    • 希尔排序
    • 归并排序
    • 快速排序
  • 查找算法
    • 二分查找
    • 哈希查找
  • 字符串算法
    • BF算法
    • KMP算法
  • 贪心算法
  • 动态规划算法
  • 回溯算法
练习

具体题目

下列是该系列中的一些典型题目:

Q001

实现一个快速排序算法。

def quick_sort(arr, left, right):
    if left < right:
        mid = partition(arr, left, right)
        quick_sort(arr, left, mid-1)
        quick_sort(arr, mid+1, right)

def partition(arr, left, right):
    pivot = arr[left]
    while left < right:
        while left < right and arr[right] >= pivot:
            right -= 1
        arr[left] = arr[right]
        while left < right and arr[left] <= pivot:
            left += 1
        arr[right] = arr[left]
    arr[left] = pivot
    return left
Q002

实现一个二分查找算法。

def binary_search(arr, target):
    left, right = 0, len(arr)-1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

测试用例

下列是该系列中的一些典型测试用例:

C001

测试快速排序算法。

arr = [3, 2, 1, 5, 6, 4]
quick_sort(arr, 0, len(arr)-1)
print(arr)  # [1, 2, 3, 4, 5, 6]
C002

测试二分查找算法。

arr = [1, 2, 3, 4, 5, 6]
target = 4
print(binary_search(arr, target))  # 3