Esempio n. 1
0
    @classmethod
    def range(cls, start, stop, node, result):
        if node is None:
            return

        if start < node.key:
            cls.range(start, stop, node.left, result)

        if start <= node.key <= stop:
            result.append(node.key)

        if stop > node.key:
            cls.range(start, stop, node.right, result)


if __name__ == "__main__":
    print(numbers)
    root = Node(numbers[0], numbers[0])
    for index, number in enumerate(numbers[1:]):
        BST.put(number, number, root)

    ordered = list()
    min_num = min(numbers)
    max_num = max(numbers)

    BST.range(min_num, max_num, root, ordered)
    print(ordered)
    print(is_sorted(numbers, ordered))
    print(BST.size(root))
Esempio n. 2
0
class Insertion:
    n = 0

    @staticmethod
    def sort(nums):
        length = len(nums)
        for outer_index in range(1, length):
            key_index = outer_index
            key = nums[key_index]
            for inner_index in range(outer_index - 1, -1, -1):
                compared = nums[inner_index]
                Insertion.n += 1
                if key < compared:
                    nums[inner_index + 1] = compared
                    key_index = inner_index
                else:
                    break
            nums[key_index] = key

        return nums


if __name__ == "__main__":
    print(numbers)

    sorted_numbers = Insertion.sort(numbers[:])
    print(sorted_numbers)
    print(is_sorted(numbers, sorted_numbers))
    print(Insertion.n)