• 技术文章 >后端开发 >Python教程

    python列表排序有哪些

    coldplay.xixicoldplay.xixi2020-09-11 13:34:57原创8331

    python列表排序:1、冒泡排序,是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来;2、插入排序,通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

    相关学习推荐:python教程

    1、冒泡排序

    冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

    2c7ac844002518bcfa22b74526f1da5.png

    def bubble_sort(list):
        n = len(list)
        for i in range(n - 1):
            for j in range( 0,n - 1 - i):
                if list[j] > list[j + 1]:
                    list[j], list[j + 1] = list[j + 1], list[j]
            # if list[i] > list[i + 1]:
            #     list[i], list[i + 1] = list[i + 1], list[i]
        print(list)
    list=[2,4,6,8,1,3,5,7,9]
    bubble_sort(list)
    #结果:[1,2,3,4,5,6,7,8,9]

    2、插入排序

    插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前的扫描过程中,需要把已排序元素逐步向后挪位,为最新元素提供插入空间。

    afaa6414925c912151fc16e2ea5698a.png

    def insertion_sort(list):
      n = len(list)
      for i in range(1, n):
        for j in range(i, 0, -1):
          if list[j] < list[j - 1]:
            list[j], list[j - 1] = list[j - 1], list[j]
          else:
            break
      print(list)
    insertion_sort([3,0,2,5,8,5,9,41,0,1,6])
    #结果:[0, 0, 1, 2, 3, 5, 5, 6, 8, 9, 41]

    3、选择排序

    选择排序(Selection Sort )是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素。放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

    def selection_sort(list):
        n = len(list)
        for i in range(0, n -1):
            min_index = i
            for j in range(i + 1, n):
                if list[min_index] > list[j]:
                    min_index = j
            if i != min_index:
                list[min_index], list[i] = list[i], list[min_index]
        print(list)
    selection_sort([5,9,6,42,9,4,66,2,3,0,1])
    #结果:0, 1, 2, 3, 4, 5, 6, 9, 9, 42, 66]

    总结:

    import random
    # 随机生成1-1000之间无序序列整数数据
    def generator():
        random_data = []
        for i in range( 0, 10 ):
            random_data.append( random.randint( 1, 1000 ) )
        return random_data
    # 冒泡排序
    def bubble_sort(list):
        # 序列长度
        n = len( list )
        for i in range( 0, n ):
            for j in range( i , n ):
                if list[i] > list[j]:
                    list[i], list[j] = list[j], list[i]
        return list
     # 选择排序
    def selection_sort(list):
        n = len(list)
        for i in range(0, n -1):
            min_index = i
            for j in range(i + 1, n):
                if list[min_index] > list[j]:
                    min_index = j
            if i != min_index:
                list[min_index], list[i] = list[i], list[min_index]
        return list
    #插入排序
    def insertion_sort(list):
      n = len(list)
      for i in range(1, n):
        for j in range(i, 0, -1):
          if list[j] < list[j - 1]:
            list[j], list[j - 1] = list[j - 1], list[j]
          else:
            break
      return list
    if __name__ == "__main__":
        # 生成随机无序数据
        list = generator()
        # 打印无序数据
        print( '随机生成的无序数据:',list )
        # 冒泡排序
        sorted_data = bubble_sort( list )
        #插入排序
        insertion_data=insertion_sort(list)
        #选择排序
        selection_data=selection_sort( list )
        # 打印排序结果
        print( '冒泡排序:',sorted_data )
        print( '插入排序:', insertion_data )
        print( '选择排序:', selection_data )
    '''
    结果:
    随机生成的无序数据: [300, 517, 591, 209, 204, 789, 417, 739, 803, 393]
    冒泡排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
    插入排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
    选择排序: [204, 209, 300, 393, 417, 517, 591, 739, 789, 803]
    '''

    想了解更多编程学习,敬请关注php培训栏目!

    以上就是python列表排序有哪些的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:python 排序
    上一篇:Python 的二元算术运算详解 下一篇:python如何使用全局变量
    大前端线上培训班

    相关文章推荐

    • python 排序算法总结及实例• java冒泡排序如何实现• php如何对查询结果集进行排序• 表格怎么按数字大小排序

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网