美文网首页
堆排序python

堆排序python

作者: April63 | 来源:发表于2018-06-04 15:41 被阅读0次
#coding: utf-8 
#!/usr/bin/python   
import random
import math

#随机生成0~100之间的数值
def get_andomNumber(num):  
    lists=[]  
    i=0  
    while i<num:  
        lists.append(random.randint(0,100))  
        i+=1
    return lists


# 调整堆
def adjust_heap(lists, i, size):
    lchild = 2 * i + 1
    rchild = 2 * i + 2
    max = i
    if i < size / 2:
        if lchild < size and lists[lchild] > lists[max]:
            max = lchild
        if rchild < size and lists[rchild] > lists[max]:
            max = rchild
        if max != i:
            lists[max], lists[i] = lists[i], lists[max]
            adjust_heap(lists, max, size)

# 创建堆
def build_heap(lists, size):
    for i in range(0, (int(size/2)))[::-1]:
        adjust_heap(lists, i, size)

# 堆排序
def heap_sort(lists):
    size = len(lists)
    build_heap(lists, size)
    for i in range(0, size)[::-1]:
        lists[0], lists[i] = lists[i], lists[0]
        adjust_heap(lists, 0, i)
    return lists


a = get_andomNumber(10)
print("排序之前:%s" %a)

b = heap_sort(a)

print("排序之后:%s" %b)

相关文章

  • python实现堆排序(HeapSort)

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

  • 堆排序python

  • Python 堆排序

  • Python 堆排序

  • Python堆排序

  • 堆排序-python

    复习之前学过的堆排序,发现掌握的不是特别牢固,又仔细阅读了几篇博文,整理出来这篇记录。 1 堆排序介绍 1.1 与...

  • python堆排序

    实现了python的堆排序利用堆的特性,实现了在10000个数的列表中,找出最小的10个数,并和传统的冒泡排序进行...

  • 每周一个 Python 模块 | heapq

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

  • 堆排序Python实现

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

  • python堆排序heapq

    heapq模块实现了一个适用于Python列表的最小堆排序算法。 堆是一种树形数据结构,其中子节点与父节点之间是一...

网友评论

      本文标题:堆排序python

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