美文网首页
python实测对比冒泡排序、选择排序、插入排序、希尔排序

python实测对比冒泡排序、选择排序、插入排序、希尔排序

作者: pao哥 | 来源:发表于2019-11-13 23:26 被阅读0次
    import time
    import random
    
    # 用于测试四种排序算法的性能
    def time_test(func):
        start = time.time()
        for i in range(100):
            lst_p = [random.randint(-1000,1000) for i in range(1,1000)] 
            func(lst_p)
        end = time.time()
        print("%11s:%5f秒" % (func.__name__,(end-start)/100))
    
    # 冒泡排序
    def bubbleSort(lst):
        for i in range(1, len(lst)-1):
            sorted_sign = True
            for j in range(1, len(lst)-i+1):
                if lst[j-1] > lst[j]:
                    lst[j-1], lst[j] = lst[j], lst[j-1]
                    sorted_sign = False
            if sorted_sign:
                return       
         
    # 选择排序
    def selectSort(lst):
        for i in range(len(lst)-1):
            min_i = i
            for j in range(i+1, len(lst)):
                if lst[j] < lst[min_i]:
                    min_i = j
            lst[min_i], lst[i] = lst[i], lst[min_i]
      
    # 插入排序
    def insertSort(lst):
        for i in range(1, len(lst)):
            for j in range(i,0,-1):
                if lst[j] < lst[j-1]:
                    lst[j], lst[j-1] = lst[j-1], lst[j]
                else:
                    break    
          
    # 希尔排序
    def shellSort(lst):
        n = len(lst)
        gap = n // 3
        while gap > 0:
            for i in range(gap, n):
                for j in range(i,0,-gap):
                    if lst[j] < lst[j-gap]:
                        lst[j], lst[j-gap] = lst[j-gap], lst[j]
                    else:
                        break
            gap //= 3
    
    
    # 冒泡排序
    time_test(bubbleSort)
    
    # 选择排序
    time_test(selectSort)
    
    # 插入排序
    time_test(insertSort)
    
    # 希尔排序
    time_test(shellSort)
    
    
    运行时间对比

    相关文章

      网友评论

          本文标题:python实测对比冒泡排序、选择排序、插入排序、希尔排序

          本文链接:https://www.haomeiwen.com/subject/nzclictx.html