zoukankan      html  css  js  c++  java
  • algorithm: heap sort in python 算法导论 堆排序

    An Python implementation of heap-sort

    based on the detailed algorithm description in Introduction to Algorithms Third Edition
    import random
    
    def max_heapify(arr, i, length):
        while True:
            l, r = i * 2 + 1, i * 2 + 2
            largest = l if l < length and arr[l] > arr[i] else i
            if r < length and arr[r] > arr[largest]:
                largest = r
            if largest != i:
                arr[i], arr[largest], i = arr[largest], arr[i], largest
            else:
                break
    
    def build_heap(arr):
        for i in range(len(arr) / 2, -1, -1):
            max_heapify(l, i, len(arr))
    
    def heap_sort(arr):
        build_heap(arr)
        length = len(arr)
        for i in range(1, length):
            arr[0], arr[-i] = arr[-i], arr[0]
            max_heapify(arr, 0, length - i)
    
    if __name__ == '__main__':
        l = [random.randint(1, 113) for i in range(18)]
        print l
        heap_sort(l)
        print l
  • 相关阅读:
    es6
    vue-router
    vue-lazyload
    java-number2
    echart事件
    weui了解
    java-number
    Java判断语句
    java 循环控制
    The access type for the readers of the blog.
  • 原文地址:https://www.cnblogs.com/ydlme/p/4300302.html
Copyright © 2011-2022 走看看