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

快速排序代码实现_我来找茬

2010-10-11 19:15 267 查看
#include <iostream>
using namespace std;
void qsort(int[], int , int);
int main(void)
{
	int array[] = {33,32,34,32,35,32,36};
	int len = sizeof(array)/sizeof(int);
	for (int i = 0 ; i < len ; i ++)
		cout<<array[i]<<",";
	cout<<endl;
	
	qsort(array,0,len-1);
	
	for (int i = 0 ; i < len ; i ++)
		cout<<array[i]<<",";
	cout<<endl;
	
	return 0;
}
void qsort(int a[], int left, int right)
{
	int pivot,l,r,temp;
	l = left;
	r = right;
	pivot = a[(left+right)/2];
	while (l<r)
	{
		while(a[l] < pivot) ++l;
		while(a[r] > pivot) --r;
		if (l>=r)
			break;
		temp = a[l];
		a[l] = a[r];
		a[r] = temp;
		//@2_begin
		if (a[l] == pivot)
			--r;//因为还保留着pivot
		if (a[r] == pivot)
			++l;
		//@2_end
		//@1_begin
		//if (l != pivot)
		//	--r;//因为还保留着pivot
		//if (r != pivot)
		//	++l;
		//@1_end
	}
	if (l == r)
		l++;
	if (left <r)qsort(a,left,l-1);
	if (l<right)qsort(a,r+1,right);
}




钱能著的《C++程序设计教程》中,使用的是@1的代码,但是此处代码的语义不正确,因此改成了@2标注的代码。

我来找茬,呵呵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: