Esempio n. 1
0
# 插入
def sort2(data):
    l = len(data)
    if l < 1:
        return data
    for i in range(l):
        val = data[i]
        j = i - 1
        while j >= 0 and val < data[j]:
            data[j + 1] = data[j]
            j -= 1
        data[j + 1] = val
    return data


# 冒泡
def sort3(data):
    l = len(data)
    for i in range(l):
        for j in range(l - i - 1):
            if data[j] > data[j + 1]:
                data[j + 1], data[j] = data[j], data[j + 1]
    return data


if __name__ == '__main__':
    validatetool.validate(sort1)
    validatetool.validate(sort2)
    validatetool.validate(sort3)
Esempio n. 2
0
"""
快算排序
2020-12-06:32:21.82;07:32.25;02:12.94;
"""
from sort import validatetool


def sort(data):
    def quick_sort(d, low, high):
        if low < high:
            pi = partition(d, low, high)
            quick_sort(d, low, pi - 1)
            quick_sort(d, pi + 1, high)

    def partition(d, low, high):
        p = d[high]
        i = low
        for j in range(low, high):
            if d[j] < p:
                d[i], d[j] = d[j], d[i]
                i += 1
        d[i], d[high] = d[high], d[i]
        return i

    quick_sort(data, 0, len(data) - 1)
    return data


if __name__ == '__main__':
    validatetool.validate(sort)
        l = len(d)
        er = (l - 1) // 2
        for i in range(er, -1, -1):
            bd(d, i, l - 1)
        for i in range(l - 1, 0, -1):
            d[i], d[0] = d[0], d[i]
            bd(d, 0, i - 1)

    def bd(d, root, end):
        while True:
            child = 2 * root + 1
            if child > end:
                break
            if child + 1 <= end and d[child + 1] > d[child]:
                child += 1
            if d[child] > d[root]:
                d[child], d[root] = d[root], d[child]
                root = child
            else:
                break

    hs(data)
    return data


if __name__ == '__main__':
    local_copy = locals().copy()
    for name, func in local_copy.items():
        if callable(func) and name.startswith('sort'):
            validatetool.validate(func)