else if (selection == 16)
{
int bubbleCount = 0;
for(bubbleCount = 0; bubbleCount < arraySize; bubbleCount++)
{
if (theArray[bubbleCount] > theArray[bubbleCount+1])
{
swap(theArray[bubbleCount], theArray[bubbleCount+1]);
}
}
}
为了澄清这里发生了什么:
selection
是我的变量,用于选择在我的程序中完成的操作。在此特定实例中,冒泡排序选择为16
。
arraySize
是用户指定的数组大小。
bubbleCount
只是典型for循环数组使用的任意名称。
我认为我的逻辑很好。应该发生的是数组从我的计数开始并将它与数组中的相邻元素进行比较。如果它更大,他们互换。 for循环应该执行arraySize
次迭代。当我用一组随机生成的数字测试它时,它无法完全排序。我在哪里陷入困境?
答案 0 :(得分:1)
按以下方式更改代码段
// enum { BubbleSort = 16, /*...*/ }
else if ( selection == BubbleSort )
{
for( int last = arraySize; last > 1 ; --last )
{
for ( int first = 1; first < last; ++first )
{
if ( theArray[first] < theArray[first - 1] )
{
swap( theArray[first], theArray[first - 1] );
}
}
}
}