[算法学习]20150414.2.堆排序

来源:互联网 发布:科比场均数据 编辑:程序博客网 时间:2024/04/29 23:32

堆排序

# -*-coding: utf-8 -*-import stringimport randomdef minHeapFix(datas, i):    """adjust datas with i as root"""    N = len(datas)    j = 2 * i + 1  # left child    while j < N:        if (j + 1 < N) and (datas[j + 1] < datas[j]):  # find the min of left and right            j += 1        if datas[j] > datas[i]:  # no need to swap            break        datas[i], datas[j] = datas[j], datas[i]        i = j        j = 2 * i + 1def buildMinHeap(datas):    """build min heap from datas"""    N = len(datas)    for i in xrange(N / 2 - 1, -1, -1):        minHeapFix(datas, i)if __name__ == '__main__':    datas = list([random.randint(1, 100) for i in range(15)])    print datas    buildMinHeap(datas)    print datas
0 0