返回顶部

python列表排序

[复制链接]
luckyLv.2 显示全部楼层 发表于 2021-9-28 15:30:34 |阅读模式 打印 上一主题 下一主题
  1、冒泡排序
  冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
[Python] 纯文本查看 复制代码
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)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前的扫描过程中,需要把已排序元素逐步向后挪位,为最新元素提供插入空间。
[Python] 纯文本查看 复制代码
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 )是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素。放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
[Python] 纯文本查看 复制代码
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]

  总结:
[Python] 纯文本查看 复制代码
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中文网转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

达内教育:成立于2002年。致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销、会计等职场人才 达内使命:缔造年轻人的中国梦、缔造达内员工的中国梦 达内愿景:做管理一流的教育公司
  • 商务合作

  • Powered by Discuz! X3.4 | Copyright © 2002-2024, 达内教育 Tedu.cn
  • 京ICP备08000853号-56 |网站地图