python用排序算法 函数实现,python中的排序算法
众所周知,关于python的算法有很多,最复杂的是python的排序算法,因为它不是单一的,而是复杂的。关于排序算法有几种不同的方法。你可以根据下面的内容和自己的项目需求来选择一个算法。
1.插入和排序:每一步都将一条要排序的记录根据其键值插入到先前排序的文件的适当位置,直到所有记录都被插入。
代码如下:
#L=[5,2,3,1,6,9]
# definesert _ sort(list):
# leng=len(list);//查找列表的长度
#foriinrange(1,leng):
# temp=list[I];//设置岗哨
# j=I;
# while(j0 and list[j-1]temp):
# list[j]=list[j-1];//大元素向后移动
# j=j-1;
# list[j]=temp;//遇到比Sentinel小的元素,设置为Sentinel
# returnlist
#print(insert_sort(L))2。冒泡排序:比较相邻元素。如果第一个比第二个大,两个都换。对每对相邻元素执行相同的工作,从第一对开始到
结尾的最后一对。此时,最后一个元素应该是数字。对除最后一个元素之外的所有元素重复上述步骤。每一次继续,都是越来越多
用更少的元素重复上述步骤,直到没有要比较的数字对。
代码如下:
#defbubble_sort(list):
# leng=len(list);
#foriinrange(0,leng)://控制跳闸次数
#flag=True
#forjinrange(1,leng-i):
#iflist[j-1]list[j]:
# flag=False
#list[j-1],list[j]=list[j],list[j-1];//交换这两个数字
#ifflag:
#休息
# returnlist
#L=[
9,5,6,8,4,2]
#print(bubble_sort(L))
3、选择排序:它的工作原理是每一次从待排序的数据元素中选出最小(或)的一个元素,存放在序列的起始位置,直到全
部待排序的数据元素排完。选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
代码如下:
#defselect_sort(list):#leng=len(list)
#foriinrange(0,leng):
#min=i//设置哨兵,假设第一个元素是最小的
#forjinrange(i+1,leng):
#iflist[j]<list[i]:
#min=j//开始寻找比哨兵小的元素。如果小则将重新设置哨兵位置
#ifmin!=i:
#list[i],list[min]=list[min],list[i]#交换这两个数
#returnlist
#L=[-4,1,2,5,3,-2]
4、快速排序:它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的
所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
代码如下:
#defpartition(list,low,high)://划分算法#key=list[low]
#while(low<high):
#while(low<highandlist[high]>=key):high=high-1
#iflow<high:
#list[low]=list[high]
#low=low+1
#while(low<highandlist[low]<=key):low=low+1
#iflow<high:
#list[high]=list[low]
#high=high-1
#list[low]=key
#returnlow
#
#defquick_sort(list,low,high)://快速排序算法
#iflow<high:
#pos=partition(list,low,high)
#quick_sort(list,low,pos-1)
#quick_sort(list,pos+1,high)
#returnlist
#L=[45,12,-32,65,28,9,-75,34]
#print(quick_sort(L,0,len(L)-1))
5、堆排序:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。
代码如下:
#堆排序#defHeapAdjust(list,pos,len)://调整堆算法
#lchild=2*pos+1
#rchild=2*pos+2
#min=pos
#ifpos<(len-1)/2:
#iflchild<lenandlist[lchild]<list[min]:
#min=lchild;
#ifrchild<lenandlist[rchild]<list[min]:
#min=rchild;
#ifmin!=pos:
#list[pos],list[min]=list[pos],list[min]
#HeapAdjust(list,min,len)
#returnlist
#
#defBuildHeap(list,len)://建堆算法
#i=len/2-1
#while(i>=0):
#HeapAdjust(list,i,len)
#i=i-1
#returnlist
#
#defHeap_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)
#returnlist
#
#L=[45,12,-32,65,28,9,-75,34]
#print(Heap_sort(L,len(L)))
好了,以上就是关于python常见的排序算法以及用法了,相信大家结合学习,一定更加深印象。如需了解更多python实用知识,点击进入PyThon学习网教学中心。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。