美文网首页
堆排序Python实现

堆排序Python实现

作者: 吃番茄的土拨鼠 | 来源:发表于2021-06-19 13:06 被阅读0次
#!/usr/bin/python
# -*- coding: UTF-8 -*-


# 是否倒序
r = False


# 下沉
def sink(a, i, n):
    while i * 2 + 1 <= n:
        j = i * 2 + 1
        if j + 1 <= n and compare(a, j + 1, j):
            j += 1
        if compare(a, j, i):
            swap(a, i, j)
            i = j
        else:
            break


def compare(a, i, j):
    return a[i] > a[j] if not r else a[i] < a[j]


def swap(a, i, j):
    t = a[i]
    a[i] = a[j]
    a[j] = t


def init(a):
    le = len(a)
    ei = le - 1
    si = le / 2 - 1
    while si >= 0:
        sink(a, si, ei)
        si -= 1


def adjust(a):
    ei = len(a) - 1
    while ei > 0:
        swap(a, 0, ei)
        ei -= 1
        sink(a, 0, ei)


def heap_sort(a):
    init(a)
    adjust(a)
    print a


heap_sort([3, 1, 2, 5, 6, 9, 6, 0, 4, 0])

相关文章

  • python实现堆排序(HeapSort)

    python实现【堆排序】(HeapSort) 算法原理及介绍 堆排序(Heapsort)是指利用堆这种数据结构所...

  • 堆排序Python实现

    堆排序作是基本排序方法的一种,类似于合并排序而不像插入排序,它的运行时间为O(nlogn),像插入排序而不像合并排...

  • 堆排序-python实现

    选择排序 每次在n个记录中选择一个最小的需要比较n-1次,但是这样的操作并没有把每一趟的比较结果保存下来,在后一趟...

  • python实现堆排序

    def adjust_heap(res,start,end): ''' 调整大顶堆,其中res为待排序堆列表 ...

  • 堆排序Python实现

  • 每周一个 Python 模块 | heapq

    专栏地址:每周一个 Python 模块 heapq 实现了适用于 Python 列表的最小堆排序算法。 堆是一个树...

  • 堆排序的python实现

    代码:

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • 堆排序

    目录 1.堆排序介绍 2.堆排序图文说明 3.堆排序的时间复杂度和稳定性 4.堆排序实现 堆排序介绍 堆排序(He...

网友评论

      本文标题:堆排序Python实现

      本文链接:https://www.haomeiwen.com/subject/qhnryltx.html