大家都知道,关于
python算法有很多,其中最复杂的是python排序算法,因为它不是单一的,而是复杂的,排序算法有几种不同的方式,大家可以根据以下内容要求结合自己的项目,选择一个算法。
1、
插入排序:每一步插入一条待排序的记录,根据其key值的大小,插入到之前排序文件中的合适位置,直至全部插入。
代码如下:
#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.冒泡排序:比较相邻元素。如果第一个大于第二个,则交换它们。对每对相邻元素执行相同的操作,从第一对开始
最后一对在最后。此时,最后一个元素应该是一个数字。对除最后一个元素之外的所有元素重复上述步骤。每次继续得到越来越多
对更少的元素重复上述步骤,直到没有一对数字可以比较。
代码如下:
# 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后面)。
代码如下:
# 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、快速排序:其基本思想是通过一次排序将待排序的数据分成两个独立的部分,其中一部分的所有数据都优于另一部分。
所有的数据都应该是小的,然后把两部分数据按照这个方法快速排序,整个排序过程可以递归进行,这样整个数据就变成了一个有序的序列。
代码如下:
# 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)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种
。
代码如下:
#堆排序
# 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 if判断的使用格式08/28
- ♥ 如何配置使用 python 日志记录模块?12/14
- ♥ python如何查找在线帮助?11/27
- ♥ python如何从数字和输出中删除r和n11/04
- ♥ Python中时间模块的方法10/30
- ♥ python中yaml的三种数据结构12/19
内容反馈