'''
    arr = list(arr)

    gap = 1
    while gap < len(arr):
        i = 0
        while i + gap < len(arr):
            __merge(arr, i, i + gap - 1, min(i + gap + gap - 1, len(arr) - 1))
            i += 2 * gap
        gap *= 2

    return arr


if __name__ == "__main__":

    nums = 10000
    input_arr = sh.generate_int_array(nums, 0, nums)
    copy_arr1 = copy_arr2 = input_arr.copy()

    # sh.sort_cost('insertion_sort', ins.insertion_sort, copy_arr1)
    sh.sort_cost('merge_sort', merge_sort, input_arr)
    sh.sort_cost('merge_sort_bottom_up', merge_sort_bottom_up, copy_arr2)
    input_arr = sh.generate_nearly_ordered_array(nums, 10)
    copy_arr1 = input_arr.copy()
    copy_arr2 = input_arr.copy()

    sh.sort_cost('insertion_sort', ins.insertion_sort, copy_arr1)
    sh.sort_cost('merge_sort', merge_sort, input_arr)
    sh.sort_cost('merge_sort_bottom_up', merge_sort_bottom_up, copy_arr2)
import sort_helper as sh


def bubble_sort(self, *arr):

    arr = list(arr)

    for i in range(len(arr) - 1):
        swap = False

        for j in range(len(arr) - 1 - i):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                swap = True
        if not swap:
            break

    return arr


if __name__ == "__main__":
    nums = 1000

    arr = sh.generate_int_array(nums, 0, nums)
    sh.sort_cost('bubble_sort', bubble_sort, arr)
Ejemplo n.º 3
0
class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def __str__(self):
        return '%s: %s' % (self.name, self.score)

    def __lt__(self, other):
        return self.score < other.score if self.score != other.score else self.name < other.name


if __name__ == "__main__":
    nums = 10000

    input_arr = sh.generate_int_array(nums, 0, nums)
    # sh.print_array(selection_sort(*input_arr))

    # input_arr = sh.generate_float_array(nums, 0, nums)
    # sh.print_array(selection_sort(*input_arr))

    # input_arr = sh.generate_string_array(nums, 2)
    # sh.print_array(selection_sort(*input_arr))

    # input_arr = [Student('Zhao',100),Student('Qian',95),Student('Sun',95),Student('Li',90)]
    # for _ in selection_sort(*input_arr):
    #     print(_)

    sh.sort_cost('selection_sort', selection_sort, input_arr)
Ejemplo n.º 4
0
        lt += 1
        gt -= 1

    arr[left], arr[gt] = arr[gt], arr[left]

    return gt


if __name__ == "__main__":

    nums = 100000

    print('Random samples test: size=%d' % nums)
    arr = sh.generate_int_array(nums, 0, nums)
    copy_arr = arr.copy()
    sh.sort_cost('quick_sort', quick_sort, arr)
    sh.sort_cost('merge_sort', ms.merge_sort, copy_arr)

    swap = 100
    print('Nearly ordered samples test: size=%d swap=%d' % (nums, swap))
    arr = sh.generate_nearly_ordered_array(nums, 100)
    copy_arr = arr.copy()
    sh.sort_cost('quick_sort', quick_sort, copy_arr)
    sh.sort_cost('merge_sort', ms.merge_sort, arr)

    print('Duplicate samples test: size=%d' % nums)
    arr = sh.generate_int_array(nums, 0, 10)
    copy_arr = arr.copy()
    sh.sort_cost('quick_sort', quick_sort, copy_arr)
    sh.sort_cost('merge_sort', ms.merge_sort, arr)
Ejemplo n.º 5
0
import sort_helper as sh


def insertion_sort(*arr):

    arr = list(arr)
    for i in range(1, len(arr)):
        temp = arr[i]

        j = i
        while j > 0 and arr[j - 1] > temp:
            arr[j] = arr[j - 1]
            j -= 1

        arr[j] = temp

    return arr


if __name__ == "__main__":

    nums = 10000
    input_arr = sh.generate_int_array(nums, 0, nums)

    sh.sort_cost('insertion sort', insertion_sort, input_arr)

    input_arr = sh.generate_nearly_ordered_array(nums, 100)

    sh.sort_cost('insertion sort:', insertion_sort, input_arr)
            arr[i], arr[gt] = arr[gt], arr[i]
        else:
            i += 1

    arr[left], arr[lt] = arr[lt], arr[left]

    return lt - 1, gt


if __name__ == "__main__":
    nums = 100000

    print('Random samples test: size=%d' % nums)
    arr = sh.generate_int_array(nums, 0, nums)
    copy_arr2 = copy_arr = arr.copy()
    sh.sort_cost('quick_sort', qs.quick_sort, arr)
    sh.sort_cost('merge_sort', ms.merge_sort, copy_arr)
    sh.sort_cost('quick_sort_three_ways', quick_sort_three_ways, copy_arr2)

    swap = 100
    print('Nearly ordered samples test: size=%d swap=%d' % (nums, swap))
    arr = sh.generate_nearly_ordered_array(nums, 100)
    copy_arr2 = copy_arr = arr.copy()
    sh.sort_cost('quick_sort', qs.quick_sort, copy_arr)
    sh.sort_cost('merge_sort', ms.merge_sort, arr)
    sh.sort_cost('quick_sort_three_ways', quick_sort_three_ways, copy_arr2)

    print('Duplicate samples test: size=%d' % nums)
    arr = sh.generate_int_array(nums, 0, 10)
    copy_arr2 = copy_arr = arr.copy()
    sh.sort_cost('quick_sort', qs.quick_sort, copy_arr)
Ejemplo n.º 7
0
        if arr[swap] < arr[index]:
            break

        arr[swap], arr[index] = arr[index], arr[swap]

        index = swap


if __name__ == "__main__":

    nums = 100000

    print('Random samples test: size=%d' % nums)
    arr = sh.generate_int_array(nums, 0, nums)
    copy_arr3 = copy_arr2 = copy_arr = arr.copy()
    sh.sort_cost('heap_sort', heap_sort, arr)
    sh.sort_cost('in_place_heap_sort', in_place_heap_sort, copy_arr3)
    sh.sort_cost('merge_sort', ms.merge_sort, copy_arr)
    sh.sort_cost('quick_sort_three_ways', qst.quick_sort_three_ways, copy_arr2)

    swap = 100
    print('\nNearly ordered samples test: size=%d swap=%d' % (nums, swap))
    arr = sh.generate_nearly_ordered_array(nums, 100)
    copy_arr3 = copy_arr2 = copy_arr = arr.copy()
    sh.sort_cost('heap_sort', heap_sort, arr)
    sh.sort_cost('in_place_heap_sort', in_place_heap_sort, copy_arr3)
    sh.sort_cost('merge_sort', ms.merge_sort, copy_arr)
    sh.sort_cost('quick_sort_three_ways', qst.quick_sort_three_ways, copy_arr2)

    print('\nDuplicate samples test: size=%d' % nums)
    arr = sh.generate_int_array(nums, 0, 10)