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

快速排序c++和python对比分析

时间:2015-05-04 22:16:10      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:python   快速排序   c++   遍历   递归   


C++的快速排序基本思想就是,任意取出一位作为对比位x,分别从序列两端开始探测,先从右边到左找到一个比x大的数,在从左边到右找到一个比x小的数,然后交换他们,一直循环到i=j。这一次交换完毕之后,将x换到中间位置,因为左边都比它小,右边都比它大,所以它在中间。在函数最后,有一个递归函数,分别在对左边和右边进行刚才的排序,直到将元素分解到1个的时候停止,循环结束。

void quicksort(int left,int right)
{
	int i,j,t,temp;
	if(left>right)
		return;
	temp = a[left];
	i = left;
	j = right;
	while(i!=j)
	{
		while(a[j]>=temp && i<j)
			j--;
		while(a[i]<=temp && i<j)
			i++;

		if(i<j)
		{
			t = a[i];
			a[i] = a[j];
			a[j] = t;
		}
	}
	a[left] = a[i];
	a[i] = temp;

	quicksort(left,i-1);
	quicksort(i+1,right);
}

python中的快速排序实现思想类似,但是代码会简单一点,开始的时候创建两个列表元素,从队列中取出一个元素x,将整个队列循环遍历一遍,将小于取出x的元素放在less中,将大于x的元素放在greater里。最后返回一个递归的表达式。

def quicksort(array):
	less = []
	greater = []
	if len(array) <= 1:
		return array
	pivot = array.pop()
	for x in array:
		if x <= pivot: less.append(x)
		else: greater.append(x)
	return quicksort(less) + [pivot] + quicksort(greater)


快速排序c++和python对比分析

标签:python   快速排序   c++   遍历   递归   

原文地址:http://blog.csdn.net/djd1234567/article/details/45485291

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