1、冒泡排序
冒泡排序是一种简单的排序算法,,它重复的遍历要排列的数列,一次比较两个元素,如果他们的顺序错误就把他们的顺序交换过来
冒泡排序的运作如下:
1、比较相邻的元素,如果第一个比第二个大,就交换他们两个
2、对每一对相邻元素做同样的工作,从开始第一对,到结尾最后一对,这样一次对比完,最大的数就会在最后面
3、同样对除了最后一个数的数列做对比操作 最大的数就会在倒数第二个
def bubble_sort(alist):
for j in range(len(alist)-1,0,-1):
for i in range(j):
if alist[i] >alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
list=[3,45,1,234,65,4,7,6,5,9,8,12,11,13,14]
bubble_sort(list)
print(list)
2、插入排序 是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入
插入排序在实现上,在从后向前扫描的过程中,需要反复将已经排序的元素向后挪位,为最新元素提供插入空间
def Insert_sort(alist):
for i in range(len(alist)):
for j in range(i,0,-1):
if alist[j]
alist=[3,45,1,234,65,4,7,6,5,9,8,12,11,13,14]
Insert_sort(alist)
print(alist)
3、快速排序
又称为划分交换排序,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后按照此方法分别进行快速排序,整个过程可以递归进行
以达到整个数据变成有序序列
运行步骤:
1、从数列中挑出一个元素,称为基准(pivot)
2、重新排列数列,左右元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任意一边)。在这个分区结束之后,改基准就处在数列的中间位置,这个称为分区
3、递归的把小于基准值元素的子数列和大于基准值的子数列排列
def quick_sort(alist,start,end):
"""快速排序"""
if start>=end:
return
# 设定起始元素为要寻找位置的基准元素
mid = alist[start]
low = start
high = end
while low
while low
high -=1
#将high指向的元素放在low位置上
alist[low] = alist[high]
# 如果low与high未重合 并且low指向的元素比基准元素小,则low向右移动
while low < high and alist[low]< mid:
low += 1
alist[high] = alist[low]
# 退出循环后,low与high重合,此时的位置正是基准元素的位置
alist[low] = mid
# 对基准元素左侧的子序列进行排序
quick_sort(alist,start,low-1)
# 对基准元素右侧的子序列进行排序
quick_sort(alist,low+1,end)
alist=[3,45,1,234,65,4,7,6,5,9,8,12,11,13,14]
quick_sort(alist,0,len(alist)-1)
print(alist)