今天就来复习一下排序吧
冒泡虽然可以排序,但在处理大量数据时,就会显得乏力,今天就来复习一下快速排序吧
def quick_sorted(lst,start,end):
#快速排序建立一个函数 放入三个形参 分别绑定 列表L 开始的索引 和结束的索引 ,一般的以第一个数据为参考值
left = start #快速排序 确定左光标
right = end #right 为右光标
if left<right:
key = lst[left]
while left<right: # 如果左光标小于右光标
while left < right and key <= lst[right]: #光标在左侧,然后跟右侧进行 比较,如果右侧大于key则向前移动
right-=1
lst[left],lst[right]=lst[right],lst[left] #如果条件不成立 调换位置 进行下一轮的计较
while left<right and key>=lst[left] #调换位置之后反过来进行比jiao
left+=1
lst[left],lst[right]=lst[right],lst[left]
#这个快速排序的原理在这里说下,就是确定一个比较值,然后吧整个列表分成两部分,前面的比这个值小,后面的比这个值大,但这些都是无序,所以要进行递归,知道key的两边都只剩一个数
quick_sorted(lst.start,left-1)#(这两个循环在第一个while循环中嵌套.这空格不好看)
quick_sorted(lst,left+1,end) #这玩意那个空格有点问题,可能结构不对
return lst
上面写的不怎么好看,下面试我以前的 ,仅供参考
网友评论