python几种排序_【Python】几种常见排序算法的pyhton实现和详解

快速排序

核心在于选择一个值后,每次把剩下的所有值归到比这个值大的一边和小的一边,然后对于比如大的一边里面,继续递归的重复这个过程。

## 快速排序

def quick_sort(li):

# 当数组长度大于1的时候才需要排序递归下去

if len(li)>1 :

# 重要的第一步,取出C位的那个数字作为基准

mid = li[len(li)//2]

right=[]

left=[]

#移除基准后,剩下的数字逐个和基准比

li.remove(mid)

for i in range(len(li)):

#比基准大的放新的右列表中,比基准小的放左列表中

if li[i]>=mid:

right.append(li[i])

else:

left.append(li[i])

# 下面这部是最核心的一步,归出来的左右列表继续递归

return quick_sort(left)+[mid]+quick_sort(right)

else : return li

if __name__ == '__main__':

li=[66,21,4,56,78,5,65]

b=quick_sort(li)

print(b)

冒泡排序

核心在于从某个数(一般是第一个)开始跟隔壁比大小,然后不断交换,这样如果是从小到大排列,从左开始比,第一轮下来,最大的数就会到最后一个排好。

# 冒泡排序

def bubble_sort(li):

# 建立一个标识符,这样如果某一次一个数都没交换,则标识符为false,则不需要继续下去了,能节省几次循环

flag = False

# 从第一个数开始比,最差只需要比总长度-1次

for i in range(len(li)-1):

# 第i个数比的时候,只需要和去掉最后i个再去掉本身1个的里面比

for j in range(len(li)-i-1):

# 如果本数字大于后一个,就交换位置

if li[j] > li[j+1]:

li[j], li[j+1] = li[j+1], li[j]

flag = True

if flag==False: break

return li

if __name__ == '__main__':

li=[66,21,4,56,78,5,65]

a=bubble_sort(li)

print(a)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值