• 技术文章 >Python技术 >Python基础教程

    python常见的排序算法有哪些?

    2020-11-07 14:21:54原创2092
    大家都知道,关于python的算法有很多,其中最为复杂的就是python的排序算法,因为它并不是单一的,而是复杂的,关于排序算法就有好几种不同的方式,大家可以根据以下内容,结合自己的项目需求,选择一个算法。

    1、插入排序:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

    代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    #L=[5,2,3,1,6,9]

    # def insert_sort(list):

    # leng=len(list);//求list长度

    # for i in range(1,leng):

    # temp=list[i];//设置哨兵

    # j=i;

    # while(j>0 and list[j-1]>temp):

    # list[j]=list[j-1];//大的元素后移

    # j=j-1;

    # list[j]=temp;//遇到比哨兵小的元素,将其设置为哨兵

    # return list;

    # print(insert_sort(L))

    2、冒泡排序:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到

    结尾的最后一对。在这一点,最后的元素应该会是数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来

    越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    # def bubble_sort(list):

    # leng=len(list);

    # for i in range(0,leng)://控制趟数

    # flag=True

    # for j in range(1,leng-i):

    # if list[j-1]>list[j]:

    # flag=False;

    # list[j-1],list[j]=list[j],list[j-1];//交换这两个数

    # if flag:

    # break

    # return list;

    # L=[9,5,6,8,4,2]

    # print(bubble_sort(L))

    3、选择排序:它的工作原理是每一次从待排序的数据元素中选出最小(或)的一个元素,存放在序列的起始位置,直到全

    部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

    代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    # def select_sort(list):

    # leng=len(list)

    # for i in range(0,leng):

    # min=i //设置哨兵,假设第一个元素是最小的

    # for j in range(i+1,leng):

    # if list[j]<list[i]:

    # min=j //开始寻找比哨兵小的元素。如果小则将重新设置哨兵位置

    # if min!=i:

    # list[i],list[min]=list[min],list[i]#交换这两个数

    # return list

    # L=[-4,1,2,5,3,-2]

    4、快速排序:它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的

    所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

    代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    # def partition(list,low,high)://划分算法

    # key=list[low]

    # while(low<high):

    # while(low<high and list[high]>=key):high=high-1

    # if low<high:

    # list[low]=list[high]

    # low=low+1

    # while(low<high and list[low]<=key):low=low+1

    # if low<high:

    # list[high]=list[low]

    # high=high-1

    # list[low]=key

    # return low

    #

    # def quick_sort(list,low,high)://快速排序算法

    # if low<high:

    # pos=partition(list,low,high)

    # quick_sort(list,low,pos-1)

    # quick_sort(list,pos+1,high)

    # return list

    # L=[45,12,-32,65,28,9,-75,34]

    # print(quick_sort(L,0,len(L)-1))

    5、堆排序:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种

    代码如下:

    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

    #堆排序

    # def HeapAdjust(list,pos,len)://调整堆算法

    # lchild=2*pos+1

    # rchild=2*pos+2

    # min=pos

    # if pos<(len-1)/2:

    # if lchild<len and list[lchild]<list[min]:

    # min=lchild;

    # if rchild<len and list[rchild]<list[min]:

    # min=rchild;

    # if min!=pos:

    # list[pos],list[min]=list[pos],list[min]

    # HeapAdjust(list,min,len)

    # return list

    #

    # def BuildHeap(list,len)://建堆算法

    # i=len/2-1

    # while(i>=0):

    # HeapAdjust(list,i,len)

    # i=i-1

    # return list

    #

    # def Heap_sort(list,len)://堆排序算法

    # BuildHeap(list,len)

    # while(len):

    # list[0],list[len-1]=list[len-1],list[0]

    # len=len-1

    # HeapAdjust(list,len,0)

    # return list

    #

    # L=[45,12,-32,65,28,9,-75,34]

    # print(Heap_sort(L,len(L)))

    好了,以上就是关于python常见的排序算法以及用法了,相信大家结合学习,一定更加深印象。如需了解更多python实用知识,点击进入PyThon学习网教学中心

    专题推荐:python常见的排序算法
    上一篇:python真正实现多线程要怎么做? 下一篇:python插入排序是算法吗?怎么用?

    相关文章推荐

    • python的主流开发工具有哪些?• python界面开发工具哪个好?• 如何使用python多线程并返回值?• python真正实现多线程要怎么做?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网