python列表排序有哪些


本文摘自php中文网,作者coldplay.xixi,侵删。

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

相关学习推荐:python教程

1、冒泡排序

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

2c7ac844002518bcfa22b74526f1da5.png

1

2

3

4

5

6

7

8

9

10

11

12

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

1

2

3

4

5

6

7

8

9

10

11

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

1

2

3

4

5

6

7

8

9

10

11

12

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]

总结:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

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列表排序有哪些的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python标准库需要导入吗

Python自定义类对象序列化为json串(代码示例)

Python中if有多个条件怎么办

介绍Python面向对象版学员管理系统

哪个手机软件有Python题库

Python迭代器中next()的用法示例

Python中找到最大或最小的n个元素的实现代码

excel转sqlite在Python下实现的方法介绍

Python中str和repr有什么区别

Python flask 多对多表查询的实例详解

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...