求助:快速排序哪里出问题了?

自己写了一个快速排序,但是测试的时候发现:如果待排序列有相同数字的话,那么排序结果就出错,没有发现哪里出问题了,哪位大侠发现错误的话请指出来,或者推荐一下讲解如何调试的书籍,感激不尽!


代码如下:



#include <iostream>


int * Quick_Sort(int array[], int low, int high);
void Show_Array(int array[], int array_size);
int Partition(  int array[], int low, int high );


int main()
{
	std::cout << "Please enter the size of array you want: ";
	int size;
	std::cin >> size;
	int *array = new int[size];
	std::cout << "Please enter " << size << " element(s):\n";
	for(int i = 0; i < size; i++)
		std::cin >> array[i];
	
	Quick_Sort( array, 0, size-1);
	Show_Array( array,  size);
	delete []array;

	std::cin.get();
	std::cin.get();

}


/QuickSort
int * Quick_Sort(int array[], int low, int high)
{
	if( low < high )
	{
		int pivot_location = Partition(array, low, high);
		Quick_Sort(array, low, pivot_location-1 );
		Quick_Sort(array, pivot_location+1, high );
	}
	return array;
}

int Partition(  int array[], int low, int high ) //返回轴心的位置,被Quick_Sort调用
{
	int pivot_key = array[low]; //默认将数组第一个元素作为轴心
	
		while (low < high )
		{
			while( low < high  &&  array[high] > pivot_key )
			{
				--high;
			}	
			array[low] = array[high];

			while( low < high  &&  array[low] < pivot_key )
			{
				++low;
			}	
			array[high] = array[low];
		}
		array[low] = pivot_key;  //每次至少一个元素会排到最终的位置
		return low;
	
}

void Show_Array(int array[], int array_size)
{
	std::cout << "the array is:\n";
	for ( int i = 0; i < array_size; ++i )
		std::cout << array[i] << " ";
	std::cout << std::endl;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值