我一直致力于这个项目的项目。一切都运行良好但我的冒泡排序有问题。我跑了并显示了函数的结果,但每隔一段时间它就会显示负数,但它不应该显示。并且每隔一段时间它就不能正确排序,这意味着我的冒泡排序功能并没有按顺序对它们进行排序。
InputStream
答案 0 :(得分:1)
代码中的问题:
while
循环。你不会在循环中做出任何破坏条件。 解决方案:使用您自己的首选破坏条件。类似的东西:
while ( true )
{
cin >> a;
if(a == 'y' || a == 'Y') {
//your array init and bubblesrt method calling here
} else {
break;
}
}
bubbleSort
循环(!)中使用未初始化的数组调用for
。<强>解决方案:强>
将bubbleSort
方法调用到for
循环之外,
for ( size_t i = 0; i < temp; i++ )
{
A1 = ( rand ( ) % temp ) + 1 ;
array [ i ] = A1;
}
bubbleSort ( array );
以下是&#39;证明&#39;实现完美的bubbleSort()
方法实现:
#include <iostream>
#include <cstdlib>
#include <ctime>
using std::cout;
using std::cin;
using std::endl;
int const TEMP = 4;
void bubbleSort ( int array [ TEMP ] );
int main ( )
{
int array [ TEMP ] = {3,2,-1,0}; // a simple demonstration
bubbleSort(array);
for (int i = 0; i < TEMP; i++) {
cout<< array[i];
}
return 0;
}
void bubbleSort(int array[TEMP]) {
int temp;
for (int i = 0; i < TEMP -1; i++) {
for (int j = 0; j < TEMP -i - 1; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
输出是:
-1023
干杯!