def bucketSort(A): n = len(A) B = [[] for i in range(n)] for i in range(0, n): ind = int(floor(n * A[i])) B[ind].append(A[i]) for i in range(0, n): insertSort(B[i]) res = [] for i in range(0, n): res.extend(B[i]) A[:] = res[:]
def __selectMidOfMid(seq): """获取中位数的中位数算法""" while len(seq) > 1: grpNum, lastNum = divmod(len(seq), 5) # 分组,每组5个 midArr = [] # 每组的中位数列表 for i in range(0, grpNum): eachGroup = seq[i * 5:(i + 1) * 5] insertSort(eachGroup) midArr.append(eachGroup[2]) if lastNum > 0: lastGroup = seq[grpNum * 5:grpNum * 5 + lastNum] insertSort(lastGroup) midArr.append(lastGroup[(lastNum - 1) // 2]) seq = midArr return seq[0]
def __selectMidOfMid(seq): """获取中位数的中位数算法""" while len(seq) > 1: grpNum, lastNum = divmod(len(seq), 5) # 分组,每组5个 midArr = [] # 每组的中位数列表 for i in range(0, grpNum): eachGroup = seq[i * 5: (i + 1) * 5] insertSort(eachGroup) midArr.append(eachGroup[2]) if lastNum > 0: lastGroup = seq[grpNum * 5: grpNum * 5 + lastNum] insertSort(lastGroup) midArr.append(lastGroup[(lastNum - 1) // 2]) seq = midArr return seq[0]