python中的快速排序算法的理解

python中的快速排序算法的理解

快速排序的方法采用分治法,其原理是在已知数组中选取第一个数为基准数,接下来是排序过程,将比基准数小的数放到它左边,比基准数大的不动,然后经过一次排序,左边部分的数都比基准数小,右边的都比基准数大,然后对左右两边分别进行同样的排序。直到最后只剩下一个数字。
例:list=[6,8,-2,3,7,1,10]
1:根据上述方法以第一个index为排序的基准数,然后将列表中比它小的数都移动到左边,比它大的数不移动,得到一个新的列表[-2,3,1,6,8,7,10]
注意:它左边的数字还是保持了相对顺序,比如-2还是在3的左边。
2:通过一次排序之后,我们已经知道了在数字6的左边,都是比6小的数,在6的右边都是比6大的数,在排序过程中我们的基准数还是6,现在我们需要把6左右的数组分成两个子列表,即左[-2,3,1]和右[8,7,10],然后对这两个子列表重复上述排序,对[-2,3,1]同理进行排序可以得到[-2,3,1],此处,因为当前基准数为-2,而它右边的3和1都比它大,所以列表不变化,应重新定义新的基准数,定义右边第一个数为基准数,同理进行排序,比1小的数放到它左边,比1大的数放到它右边,得到[-2,1,3],其次,还需将[8,7,10]同理进行排序,得到[7,8,10],最后,得到[-2,1,3,6,7,8,10],排序完成。

def quick_sort(list_,start,end):
    if start>=end:
        return
    cmp_index=start
    for i in range(start+1,end):
        if list_[i]<list_[cmp_index]:
            tmp=list_[i]
            del list_[i]
            list_.insert(cmp_index, tmp)
            cmp_index+=1
    quick_sort(list_,start=start,end=cmp_index-1)
    quick_sort(list_,start=cmp_index+1,end=len(list_))

num=[6,8,-2,3,7,1,10]
quick_sort(num,0,len(num))
print(num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值