zoukankan      html  css  js  c++  java
  • 简单的堆排序-python

    AA = raw_input().strip().split(' ')
    A = []
    ###############初始化大堆###############
    def fixUp(A):
        k = len(A) - 1
        while k >= 0 and A[k // 2] < A[k]:
            A[k // 2], A[k] = A[k],A[k // 2]
            k = k // 2
    for num in AA:
        A.append(int(num))
        fixUp(A)
    #######################排序调整过程###########    
    def fixDown(A):
        A.insert(0,-1)
        N = len(A) -1
        k = 1
        while 2*k <= N:
            j = 2 * k
            if j < N and A[j] < A[j + 1]:
                j = j + 1
            if  A[k] < A[j]:
                A[k],A[j ] = A[j],A[k]
                k = j
            else:
                break
        A.remove(-1)
        print A
    def delMaxElem(A):
        maxElem = A[0]
        N = len(A)
        if N <= 0:
            print "No array"
        if N == 1:
            return maxElem
        else:
            A[0] = A.pop()
            fixDown(A)
            return maxElem
    ###########sort##############
    result = []
    for i in range(len(A)):
        result.append(delMaxElem(A))
    print result
  • 相关阅读:
    二维数组排序
    php-快速排序
    sql优化相关
    全页面静态化缓存
    php--1-100相加之和
    php--阶乘
    socket
    posix_getpid 函数win下失效问题
    水仙花数
    常用的魔术方法
  • 原文地址:https://www.cnblogs.com/Kermit-Li/p/5600699.html
Copyright © 2011-2022 走看看