递归实现快速排序
def qs(arr):
if len(arr) <= 1: return arr
return qs([i for i in arr[1:] if i < arr[0]]) + arr[0:1] + qs([i for i in arr[1:] if i >= arr[0]])list0 = [1,2,5,3,7,9,33,2,25,99,0,-2,-66]print(qs(list0))
【递归实现快速排序】1,判断列表长度,如果只有1个元素或者是空列表,直接原样返回
2,取列表的第一个元素为参照物,遍历列表的其余每一个元素,比参照物小的放在参照物左边,大的放右边,递归操作,最后返回。
注意中间的参照物
arr[0:1]
,不能写成arr[0]
。因为arr[0]
是int
类型,arr[0:1]
是列表,可以参与列表运算。选择排序:
L = [1,1,4,3,6,5,7,8,3,2,9,0]def select_sort(L, asc=True):
for i in range(len(L)-1):
for j in range(i+1, len(L)):
if L[i] >= L[j]:
L[i], L[j] = L[j], L[i]
if asc:
return L
else:
L.reverse()
return L
a = select_sort(L)
冒泡排序:
def bubble_sort(L, asc=True):
for i in range(len(L)-1):
for j in range(len(L)-1-i):
if L[j] >= L[j+1]:
L[j],L[j+1] = L[j+1],L[j]
if asc:
return L
else:
L.reverse()
return L
a = bubble_sort(L)
print(a)
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- paddle|动手从头实现LSTM
- pytorch|使用pytorch从头实现多层LSTM