Пример #1
0
def radix_sort(list_):
    u"""Return a sorted list by the radix sort algorithm."""
    depth = 0
    while True:
        bins = {}
        depth += 1
        for num in list_:
            dc = 10**(depth - 1)
            bin_key = ((num % (10**depth)) - (num % dc)) / dc
            bins.setdefault(bin_key, []).append(num)
        list_ = []
        for bin_ in sorted(bins.keys()):
            for val in bins[bin_]:
                list_.append(val)

        if len(bins[bin_key]) == len(list_) and depth > 0:
            break
    return list_


if __name__ == '__main__':
    from data_structures import time_func
    time_func(radix_sort)
Пример #2
0
            if left[0] <= right[0]:
                next = left.pop(0)
            else:
                next = right.pop(0)
        elif len(left) > 0:
            next = left.pop(0)
        else:
            next = right.pop(0)
        sorted_.append(next)
    return sorted_


if __name__ == "__main__":
    from data_structures import time_func

    time_func(merge_sort)

    # from functools import partial
    # import timeit
    # reps = 1000
    # length = 1000
    # print "\nAll tests run with " + str(reps) + " repetitions.\n"
    # unsorted_list = [1,5,3,8,6,2,0,4,7,9]
    # t= timeit.Timer(partial(merge_sort, unsorted_list))
    # print "A list of length ten takes: " + str(t.timeit(reps)) + " seconds to sort.\n"

    # unsorted_list = range(length)
    # t= timeit.Timer(partial(merge_sort, unsorted_list))
    # print "An already sorted list of length " + str(length) + " takes: " + str(t.timeit(reps)) + " seconds to sort.\n"

    # unsorted_list = range(length)
Пример #3
0
        if len(left) > 0 and len(right) > 0:
            if left[0] <= right[0]:
                next = left.pop(0)
            else:
                next = right.pop(0)
        elif len(left) > 0:
            next = left.pop(0)
        else:
            next = right.pop(0)
        sorted_.append(next)
    return sorted_


if __name__ == '__main__':
    from data_structures import time_func
    time_func(merge_sort)

    # from functools import partial
    # import timeit
    # reps = 1000
    # length = 1000
    # print "\nAll tests run with " + str(reps) + " repetitions.\n"
    # unsorted_list = [1,5,3,8,6,2,0,4,7,9]
    # t= timeit.Timer(partial(merge_sort, unsorted_list))
    # print "A list of length ten takes: " + str(t.timeit(reps)) + " seconds to sort.\n"

    # unsorted_list = range(length)
    # t= timeit.Timer(partial(merge_sort, unsorted_list))
    # print "An already sorted list of length " + str(length) + " takes: " + str(t.timeit(reps)) + " seconds to sort.\n"

    # unsorted_list = range(length)
Пример #4
0
def insertion_sort(unsorted):
    u"""Return list sorted via insertion sort."""
    for i, val in enumerate(unsorted):
        while val < unsorted[i-1] and i > 0:
            unsorted[i] = unsorted[i-1]
            i -= 1
        unsorted[i] = val
    return unsorted


if __name__ == '__main__':
    from data_structures import time_func
    time_func(insertion_sort)
Пример #5
0
def radix_sort(list_):
    u"""Return a sorted list by the radix sort algorithm."""
    depth = 0
    while True:
        bins = {}
        depth += 1
        for num in list_:
            dc = 10 ** (depth-1)
            bin_key = ((num % (10 ** depth))-(num % dc))/dc
            bins.setdefault(bin_key, []).append(num)
        list_ = []
        for bin_ in sorted(bins.keys()):
            for val in bins[bin_]:
                list_.append(val)

        if len(bins[bin_key]) == len(list_) and depth > 0:
            break
    return list_


if __name__ == '__main__':
    from data_structures import time_func
    time_func(radix_sort)
Пример #6
0
def insertion_sort(unsorted):
    u"""Return list sorted via insertion sort."""
    for i, val in enumerate(unsorted):
        while val < unsorted[i - 1] and i > 0:
            unsorted[i] = unsorted[i - 1]
            i -= 1
        unsorted[i] = val
    return unsorted


if __name__ == '__main__':
    from data_structures import time_func
    time_func(insertion_sort)