快速排序(quick sort)的Python实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/8/11 12:59 AM
# @Author  : Blake

import random

def quick_sort(array):

    print('every list: ', array)
    if len(array) < 2:
        return array

    else:
        pivot = array[0]
        less = [i for i in array[1:] if i < pivot]
        greater = [i for i in array[1:] if i > pivot]

        return quick_sort(less) + [pivot] + quick_sort(greater)

array = list(range(10))
random.shuffle(array)
print(quick_sort(array))

global count
count = 0
def quick_resort(a, b):

    global count
    if a > b:
        x = a % b
        if x == 0:
            return b, count

        count += 1
        print(x, b)
        return quick_resort(x, b)

    if a < b:
        x = b % a
        if x == 0:
            return a, count

        count += 1
        print(a, x)
        return quick_resort(a, x)

print('-' * 30)

numbers = []
for i in range(2):
    numbers.append(random.randint(0, 1000000))
a, b = numbers[0], numbers[1]
print('原始模型 ', a, b)
print('最小切分数,切分次数:', (quick_resort(a, b)))

every list:  [0, 7, 8, 5, 6, 4, 2, 3, 1, 9]
every list:  []
every list:  [7, 8, 5, 6, 4, 2, 3, 1, 9]
every list:  [5, 6, 4, 2, 3, 1]
every list:  [4, 2, 3, 1]
every list:  [2, 3, 1]
every list:  [1]
every list:  [3]
every list:  []
every list:  [6]
every list:  [8, 9]
every list:  []
every list:  [9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
------------------------------
原始模型  191541 164789
26752 164789
26752 4277
1090 4277
1090 1007
83 1007
83 11
6 11
6 5
1 5
最小切分数,切分次数: (1, 9)
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值