''' mbinary ######################################################################### # File : shellSort.py # Author: mbinary # Mail: zhuheqin1@gmail.com # Blog: https://mbinary.xyz # Github: https://github.com/mbinary # Created Time: 2018-07-06 16:30 # Description: ######################################################################### ''' def shellSort(s, gaps=None): if gaps is None: gaps = [127, 63, 31, 15, 7, 3, 1] n = len(s) for gap in gaps: for j in range(gap, n): cur = j num = s[j] while cur >= gap and num < s[cur-gap]: s[cur] = s[cur-gap] cur -= gap s[cur] = num return s if __name__ == '__main__': from random import randint import sys n = 20 if len(sys.argv) > 1: n = int(sys.argv[1]) nums = [randint(1, 100) for i in range(n)] print(nums) print(shellSort(nums))