用python排序算法_Python常用排序算法

1.冒泡排序

思路:将左右元素两两相比较,将值小的放在列表的头部,值大的放到列表的尾部

效率:O(n²)

ContractedBlock.gif

ExpandedBlockStart.gif

1 defbubble_sort(li):2 for i in range(len(li)-1):3 for j in range(len(li)-i-1):4 if li[j] > li[j+1]:5 li[j],li[j+1] = li[j+1],li[j]

View Code

2.选择排序

思路:遍历列表,挑出一个最小的数字,放到列表的第一个索引位。在一趟遍历剩余列表中的最小数,继续放置。

效率:O(n²)

ContractedBlock.gif

ExpandedBlockStart.gif

1 defselect_sort(li):2 for i in range(len(li)-1):3 mim_loc =i4 for j in range(i+1,len(li)):5 if li[j]

View Code

3.插入排序

思路:列表分为有序区和无序区两个部分,最初有序区只有一个元素。每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空

效率:O(n²)

ContractedBlock.gif

ExpandedBlockStart.gif

1 definsert_sort(li):2 for i in range(1,len(li)):3 tmp =li[i]4 j = i - 1

5 while j >= 0 and tmp

8 li[j+1] = tmp

View Code

4.快速排序

思路:取一个元素P,使元素P归位,列表被P分为两个部分,左边的比P小,右边比P大,递归完成排序。

效率:O(nlogn)

ContractedBlock.gif

ExpandedBlockStart.gif

1 defquick_sort(li,left,right):2 if left

<

<<

ContractedBlock.gif

ExpandedBlockStart.gif

<<<

<<

<

<

<

ContractedBlock.gif

ExpandedBlockStart.gif

<<<

<

<

ContractedBlock.gif

ExpandedBlockStart.gif

1173792-20170811145110148-2051661339.png

ContractedBlock.gif

ExpandedBlockStart.gif

<

<

ContractedBlock.gif

ExpandedBlockStart.gif

ContractedBlock.gif

ExpandedBlockStart.gif

<

ContractedBlock.gif

ExpandedBlockStart.gif

ContractedBlock.gif

ExpandedBlockStart.gif

ContractedBlock.gif

ExpandedBlockStart.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值