我是靠谱客的博主 执着棉花糖,最近开发中收集的这篇文章主要介绍求助:快速排序哪里出问题了?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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


代码如下:



#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;
}


最后

以上就是执着棉花糖为你收集整理的求助:快速排序哪里出问题了?的全部内容,希望文章能够帮你解决求助:快速排序哪里出问题了?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部