排序算法:快速排序(python写法)
排序算法:快速排序(python写法)
快速排序:
直接将所取的元素放到他应该在的位置。
做法:新建一个左列表,存取所有比当前元素小的元素。
再新建一个右列表,存取所有比当前元素大的元素。
对左列表和右列表分别再进行快速排序(也就是递归。递归的两个要素:调用自身,结束条件)
空间复杂度:O(n+log(2,n))
时间复杂度:O(n*log(2,n))
时间复杂符和空间复杂度可以看前边文章插入排序有所提及。。。。。。
快速排序(python代码):
def quick_sort(li):
if len(li) <= 1:
return li
else:
left = []
right = []
mid = li[0]
for i in range(1,len(li)):
if mid > li[i]:
left.append(li[i])
else:
right.append(li[i])
return quick_sort(left) + [mid] +quick_sort(right)
print(li1)
print(quick_sort(li1))
快速排序代码注释:
# def _quick_sort(li):#快速排序
# if len(li)>1:#递归持续的条件:li还有两个或者两个以上的元素,还值得进行一次快速排序。
# left=[]#初始化左列表
# right=[]#初始化右列表
# mid=li[0]#取第一个元素来进行比较,放到中间。
# for i in range(1,len(li)):#要从第二个元素开始与所取的元素(mid)进行比较
# if li[i]<mid:#如果当前元素小于所取的元素(mid),则把他放到mid的左边
# left.append(li[i])
# else:#如果当前元素大于等于所取的元素(mid),则把他放到mid的右边。
# right.append(li[i])
# return _quick_sort(left)+[mid]+_quick_sort(right)#进行递归,返回排序号的结果。
# else:#如果li的长度小于等于1
# return li
注意,我在这写的快速排序是稳定的。传统的快速排序是不稳定的。
根据判断语句:
# if li[i]<mid:#如果当前元素小于所取的元素(mid),则把他放到mid的左边
# left.append(li[i])
# else:#如果当前元素大于等于所取的元素(mid),则把他放到mid的右边。
# right.append(li[i])
可以看出来,再此写入的排序是有序的!
有序,指列表中元素由相同的情况下,按照的的初始索引顺序进行有序排列。。。。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)