激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現的堆排序算法原理與用法實例分析

Python實現的堆排序算法原理與用法實例分析

2020-12-19 01:01Alex Yu Python

這篇文章主要介紹了Python實現的堆排序算法,簡單描述了堆排序的原理,并結合實例形式分析了Python實現堆排序的相關操作技巧,代碼中備有較為詳細的注釋便于理解,需要的朋友可以參考下

本文實例講述了Python實現的堆排序算法。分享給大家供大家參考,具體如下:

堆排序(Heapsort)是指利用堆這種數據結構所設計的一種排序算法。堆是一個近似完全二叉樹的結構,并同時滿足堆性質:即子結點的鍵值或索引總是小于(或者大于)它的父節點。

具體代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#-*- coding: UTF-8 -*-
import numpy as np
def MakeHeap(a):
  for i in xrange(a.size / 2 - 1, -1, -1):#對非葉子節點的子節點進行調節,構建堆
    AdjustHeap(a, i, a.size)
def AdjustHeap(a, i, n):
  j = i*2 +1                     #選擇節點i的左子節點
  x = a[i]                       #選擇節點的數值
  while j < n:                    #循環對子節點及其子樹進行調整
    if j + 1 < n and a[j+1] < a[j]:    #找到節點i子節點的最小值
      j += 1
    if a[j] >= x :                  #若兩個子節點均不小于該節點,則不同調整
      break
    a[i], a[j] = a[j], a[i]             #將節點i的數值與其子節點中最小者的數值進行對調
    i = j                        #將i賦為改變的子節點的索引
    j = i*2 + 1                   #將j賦為節點對應的左子節點
def HeapSort(a):
  MakeHeap(a)                 #構建小頂堆
  for i in xrange(a.size - 1,0, -1):   #對堆中的元素逆向遍歷
    a[i], a[0] = a[0], a[i]           #將堆頂元素與堆中最后一個元素進行對調,因為小頂堆中堆頂元素永遠最小,因此,輸出即為最小元素
    AdjustHeap(a, 0, i)          #重新調整使剩下的元素仍為一個堆
if __name__ == '__main__':
  a = np.random.randint(0, 10, size = 10)
  print "Before sorting..."
  print "---------------------------------------------------------------"
  print a
  print "---------------------------------------------------------------"
  HeapSort(a)
  print "After sorting..."
  print "---------------------------------------------------------------"
  print a[::-1]                    #因為堆排序按大到小進行排列,采用a[::-1]對其按從小到大進行輸出
  print "---------------------------------------------------------------"

運行結果:

Python實現的堆排序算法原理與用法實例分析

希望本文所述對大家Python程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/biaoyu/p/4831640.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久不射电影 | 久久婷婷一区二区三区 | 欧美日韩成人一区二区 | av免费在线观看国产 | 国产亚洲综合一区二区 | 手机视频在线播放 | 91麻豆精品国产91久久久无需广告 | 中文字幕精品在线播放 | 色八影院 | 日韩在线毛片 | 精品一区二区久久久久久久网精 | 一区二区三区小视频 | 日本在线免费观看 | 久久55| 黄色网址免费入口 | 视频一区二区三区免费观看 | 亚洲性生活免费视频 | 黄色网电影 | 激情夜色| 国产成人在线免费视频 | 亚洲一区二区在线视频 | 午夜影院操 | 国产精品免费一区二区三区四区 | 三级xxxx| 欧美国产成人在线 | 欧美成人精品一区二区男人小说 | 毛片在线免费播放 | 亚洲一区二区三区视频 | 视频一区二区三区在线播放 | 视频久久免费 | 亚洲精华液久久含羞草 | 亚洲精品aa| 一区二区三区视频在线观看 | 国产91精品久久久久久 | 国产成人aⅴ | 一级毛片播放 | 在线播放免费播放av片 | 亚洲天堂ww | 日韩av片网站 | 蜜桃91麻豆 | 日韩午夜一区二区三区 |