GPT-4o · OpenAI
系统Prompt已加载 · 模型: GPT-4o · VIP折扣: x0.8 · 流式输出已开启

请帮我用Python写一个快速排序算法

用户 · 14:23 · 预估消耗: 45 tokens
AI

快速排序(Quick Sort)是一种高效的排序算法,采用分治策略。以下是 Python 实现:

python
def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

时间复杂度分析:

  • 平均情况: O(n log n) — 每次分区将数组大致等分
  • 最坏情况: O(n²) — 当数组已排序且选择首/尾元素为基准时
  • 空间复杂度: O(n) — Python 列表推导式创建新列表
输入: 45 tokens 输出: 312 tokens 缓存: 免费命中 ✓ 积分: -0.28 耗时: 0.8s
GPT-4o · VIP x0.8 · 剩余积分: 12,449

非常好!能不能再给出一个堆排序的版本?

用户 · 14:25
AI

好的,以下是堆排序(Heap Sort)的 Python 实现:

python
def heapify(arr, n, i):
    largest = i
    left = 2 * i + 1
    right = 2 * i + 2
    if left < n and arr[left] > arr[largest]:
        largest = left
    if right < n and arr[right] > arr[largest]:
        largest = right
    if largest != i:
        arr[i], arr[largest] = arr[largest], arr[i]
        heapify(arr, n, largest)

def heap_sort(arr):
    n = len(arr)
    # Build max heap
    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)
    # Extract elements
    for i in range(n - 1, 0, -1):
        arr[0], arr[i] = arr[i], arr[0]
        heapify(arr, i, 0)
    return arr

堆排序优势:时间复杂度始终为 O(n log n),不需要额外空间(原地排序),最坏情况和平均情况性能一致。相比快排序,堆排序不存在退化到 O(n²) 的风险。

输入: 92 tokens 输出: 456 tokens 缓存: 未命中 积分: -0.44 耗时: 1.2s
GPT-4o · VIP x0.8 · 剩余积分: 12,005
提示: 赠送积分优先消耗,剩余赠送: 2,348 | 付费: 10,000
SSL/TLS 加密传输
数据加密保护
官方认证站点
© 2024 Token1234. 唯一官方站点 token1234.net 谨防钓鱼