使冒泡排序在C ++中工作

时间:2014-03-17 22:45:53

标签: c++ arrays sorting bubble-sort

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次迭代。当我用一组随机生成的数字测试它时,它无法完全排序。我在哪里陷入困境?

1 个答案:

答案 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] );
            }
        }
    }
}