zoukankan      html  css  js  c++  java
  • 堆排序

    堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。

    def heapify(arr, n, i): 
        largest = i  
        l = 2 * i + 1     # left = 2*i + 1 
        r = 2 * i + 2     # right = 2*i + 2 
      
        if l < n and arr[i] < arr[l]: 
            largest = l 
      
        if r < n and arr[largest] < arr[r]: 
            largest = r 
      
        if largest != i: 
            arr[i],arr[largest] = arr[largest],arr[i]  # 交换
      
            heapify(arr, n, largest) 
      
    def heapSort(arr): 
        n = len(arr) 
      
        # Build a maxheap. 
        for i in range(n, -1, -1): 
            heapify(arr, n, i) 
      
        # 一个个交换元素
        for i in range(n-1, 0, -1): 
            arr[i], arr[0] = arr[0], arr[i]   # 交换
            heapify(arr, i, 0) 
      
    arr = [ 12, 11, 13, 5, 6, 7] 
    heapSort(arr) 
    n = len(arr) 
    print ("排序后") 
    for i in range(n): 
        print ("%d" %arr[i])
    排序后
    5
    6
    7
    11
    12
    13

    参考https://www.runoob.com/python3/python3-examples.html

  • 相关阅读:
    html问题记录20180529
    html问题记录20180518
    html问题记录20180515
    Redis持久化--AOF
    Redis持久化--RDB
    Redis事件模型
    两个字符串的编辑距离-动态规划方法
    Reactor事件模型在Redis中的应用
    事件驱动模式--Reactor
    IO多路复用--总结
  • 原文地址:https://www.cnblogs.com/xingnie/p/12245222.html
Copyright © 2011-2022 走看看