python实现高速排序算法(两种不同实现方式)
2017-06-06 17:23
585 查看
# -*- 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
相关文章推荐
- python实现快速排序算法(两种不同实现方式)
- python中package机制的两种实现方式(转载)
- 交换函数的两种不同的实现方式------地址传递和引用参数
- python中package机制的两种实现方式
- 【Python】python 多线程两种实现方式
- python 多线程两种实现方式
- 实现axis2两种不同方式的客户端
- 使用PopupWindow和Activity两种不同的方式实现弹窗效果
- [转载]python中package机制的两种实现方式
- python实现多线程的两种方式
- python中package机制的两种实现方式
- java Thread编程(三) 同步的两种不同实现方式
- 实现axis2两种不同方式的客户端
- TabHost两种不同的实现方式
- python中package机制的两种实现方式
- python中package机制的两种实现方式
- Python:使用threading模块实现多线程编程二[两种方式起线程]
- java Thread编程(三) 同步的两种不同实现方式
- 动画Animation两种实现方式的不同效果
- TabHost两种不同的实现方式