码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构之快速排序

时间:2015-04-27 19:59:23      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

快排应该是数据结构中排序中最重要的一个,包括其中的patition思想,以及后面的整体的分治思想,都对于解决实际问题有很大的借鉴。快速排序是一种交换排序的方法,不稳定,也就是说如果两个相同的数,快排之后二者可能交换位置。

1.首先来看partition函数,函数名partition(data, l, r),在data[l,r]中找到第l个数的位置i,使得i左侧的数都小于该数,i右侧的数都大于该数,并返回位置i

def partition(data, l, r):
	i = l
	j = r
	x = data[i]
	while i<j:
		while i<j&data[j]>x:
			j -= 1
		if i<j:
			data[i] = data[j]
			i += 1
		while i<j&data[i]<x:
			i += 1
		if i<j:
			data[j] = data[i]
			j -= 1
	data[i] = x
	return i

2.然后对整个数组分治递归操作即可

def qsort(data, l, r):
	if l<r:
		i = partition(data, l, r)
		qsort(data, l, i-1)
		qsort(data, i+1, r)
	
	
def quicksort(data):
	qsort(data, 0, len(data)-1)

 

数据结构之快速排序

标签:

原文地址:http://www.cnblogs.com/xiamaogeng/p/4461044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!