python快速排序算法思路_python实现快速排序算法(两种不同实现方式)

# -*- coding: utf-8 -*-

"""

Created on Fri May 16 17:24:05 2014

@author: lifeix

"""

#快速排序

import sys

import random

length = 30

def qsort(arr,left,right):

lp = left

rp = right

if lp == rp:return

while True:

while arr[lp] >= arr[right] and rp > lp:

lp = lp +1

while arr[rp] <= arr[right] and rp > lp:

rp = rp - 1

arr[lp],arr[rp] = arr[rp],arr[lp]

if lp >= rp:

break

arr[rp],arr[right] = arr[right],arr[lp]

if left < lp:

qsort(arr,left,lp - 1)

qsort(arr,rp,right)

def main():

arr = []

sys.setrecursionlimit(100000)

for i in range(length):

arr.append(random.randint(0,10000))

qsort(arr,0,length-1)

print arr

if __name__ == '__main__':

for i in range(10):

main()

#快速排序第二种实现

def quickSort(arr,p,r):

if p < r:

q = partition(arr,p,r)

quickSort(arr,p,q - 1)

quickSort(arr,q+1,r)

def partition(arr,p,r):

x = arr[r]

i = p

for j in range(p,r):

if arr[j] < x:

arr[i],arr[j] = arr[j],arr[i]

i = i + 1

arr[i],arr[r] = arr[r],arr[i]

return i

if __name__ == '__main__':

arr = [1,3,89,2,0,78,98,23,56,100]

quickSort(arr,0,len(arr) - 1)

print arr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值