彩世界平台-彩世界时时app-彩世界开奖app苹果下载

热门关键词: 彩世界平台,彩世界时时app,彩世界开奖app苹果下载

您的位置:彩世界平台 > 彩世界平台 > Python实现的堆排序算法原理与用法实例分析,p

Python实现的堆排序算法原理与用法实例分析,p

发布时间:2019-08-31 17:05编辑:彩世界平台浏览(174)

    Python实现的堆排序算法原理与用法实例分析,python堆排序

    本文实例讲述了Python实现的堆排序算法。分享给大家供大家参考,具体如下:

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

    具体代码如下:

    #-*- 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 "---------------------------------------------------------------"
    

    运行结果:

    彩世界开奖app苹果下载 1

    彩世界开奖app苹果下载彩世界时时app,更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

    希望本文所述对大家Python程序设计有所帮助。

    本文实例讲述了Python实现的堆排序算法。分享给大家供大家参考,具体如下: 堆...

    Python实现的插入排序算法原理与用法实例分析,python实例分析

    本文实例讲述了Python实现的插入排序算法原理与用法。分享给大家供大家参考,具体如下:

    插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法

    插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

    插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

    具体代码如下:

    #-*- coding: UTF-8 -*-
    import numpy as np
    def InsertSort(a):
      for i in xrange(1,a.size):
        for j in xrange(i,0, -1):
          if a[j-1] > a[j]:
            a[j-1] , a[j] = a[j], a[j-1]
          else:
            break
    if __name__ == '__main__':
      a = np.random.randint(0, 10, size = 10)
      print "Before sorting..."
      print "---------------------------------------------------------------"
      print a
      print "---------------------------------------------------------------"
      print "After sorting..."
      InsertSort(a)
      print "---------------------------------------------------------------"
      print a
      print "---------------------------------------------------------------"
    

    运行结果:

    彩世界开奖app苹果下载 2

    更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

    希望本文所述对大家Python程序设计有所帮助。

    本文实例讲述了Python实现的插入排序算法原理与用法。分享给大家供大家参考...

    本文由彩世界平台发布于彩世界平台,转载请注明出处:Python实现的堆排序算法原理与用法实例分析,p

    关键词: