我已经编写了一个用于在c ++中快速排序的代码,但它为少数输入提供了错误。例如:在输入元素数= 5且输入为5 4 3 2 1
时,它显示一次迭代的错误输出。只有在按递减顺序输入连续数字时才会输出错误信息。
#define MAX 100
class quicksort
{
public:
int arr[MAX], n;
void getdata();
void quick(int, int);
void display();
};
void quicksort::getdata()
{
int i;
cout << "\nEnter Array Size : ";
cin >> n;
cout << "\nEnter Array Elements : ";
for (i = 0; i < n; i++)
{
cout << "\nEnter Element [" << i << "] : ";
cin >> arr[i];
}
}
void quicksort::quick(int start, int end)
{
int pivot = start, i = pivot + 1, j = end, temp;
while (i <= j)
{
while (arr[i] < arr[pivot])
{
if (i == end - 1 || j <= i)
break;
i++;
}
while (arr[j] >= arr[pivot])
{
j--;
if (j < i)
break;
}
if (i < j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
else
{
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
}
if (j != start)
quick(start, j - 1);
if (j != end)
quick(j + 1, end);
}
}
int main()
{
quicksort s;
s.getdata();
s.quick(0, (s.n - 1));
s.display();
return 0;
}