您的位置:首页 > 编程语言 > Python开发

python——快速排序实现

2016-09-18 08:09 375 查看
快速排序(quick sort)是一种分治排序算法。

快速排序的思路为:

1、选取一个划分元素(partition element,有时又称为pivot);

2、重排列表将其划分为三个部分:left(小于划分元素pivot的部分)、划分元素pivot、right(大于划分元素pivot的部分),此时,划分元素pivot已经在列表的最终位置上;

3、分别对left和right两个部分进行递归排序。

代码实现如下:#! /usr/bin/python
# -*- coding:UTF-8 -*-

def excute_quicksort(num_list):
qsort(num_list, 0, len(num_list) - 1)
return num_list

def qsort(num_list, first, last):
if first < last:
split = quicksort(num_list, first, last)
qsort(num_list, first, split - 1)
qsort(num_list, split + 1, last)

def quicksort(num_list, first, last):
pivot = num_list[first]
leftmark = first + 1
rightmark = last
while True:
while pivot >= num_list[leftmark]:
if leftmark == rightmark:
break
leftmark += 1
while pivot < num_list[rightmark]:
rightmark -= 1
if leftmark < rightmark:
num_list[leftmark], num_list[rightmark] = num_list[rightmark], num_list[leftmark]
else:
break
num_list[first], num_list[rightmark] = num_list[rightmark], num_list[first]
return rightmark

def main():
num_list = [5, 7, 1, 3, 6]
print 'before sort:', num_list
print 'after sort', excute_quicksort(num_list)

if __name__ == "__main__":
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息