【问题标题】:Bubble sort in c++ (asc)c++中的冒泡排序(asc)
【发布时间】:2018-10-31 01:33:27
【问题描述】:

我看过一个关于对数组进行冒泡排序的教程。

这是使用的代码:

    int main()
    {
        int numbers[5];
    int asc;

    //input 5 integers
    cout << "Enter 5 Numbers : \n";
    for (int i = 0; i < 5; ++i) {
        cin >> numbers[i];
    }

    for (int i = 0; i < 5; ++i)   //  outer loop
    {
        for (int a = i + 1; a < 5; ++a) // inner loop
        {
            if (numbers[i] > numbers[a]) 
            {
                asc = numbers[i];
                numbers[i] = numbers[a]; // swapping
                numbers[a] = asc;
            }
        }
    }
    cout << endl << "Ascending Order : ";
    for (int i = 0; i < 5; ++i)
    {
        cout << numbers[i] << " ";
    }
    return 0;
}

我试图理解每一行,但我被困在外循环、内循环和 SWAPPING 部分,我对那部分有点困惑。

有什么帮助吗?提前致谢!

【问题讨论】:

  • 我想你不会在这里真正找到答案......如果你对这个概念感到困惑,我会查找 Bubble sort 的视觉视频。
  • 什么,确实,你不明白吗?在不知道您不清楚的情况下,我们可能会解释您已经知道的事情,而不会消除您的困惑。
  • 您是想了解这段代码还是想了解冒泡排序的工作原理?如果您想了解该算法,这里有很多视频和教程 - 这是来自维基百科的示例:en.wikipedia.org/wiki/Bubble_sort#Step-by-step_example 这是一个显示相同类型的视频:youtube.com/watch?v=nmhjrI-aW5o

标签: c++ bubble-sort


【解决方案1】:

让输入为 5、1、4、2、8。

由于 5 > 1,(number[i] > number[i]+1)

在执行交换之前,您需要一个变量来临时存储 number[i] 的值,在这种情况下,您的变量是 asc。

asc 存储 number[i] 的值时,number[i+1] 的值将替换 number[i] 的原始值,asc 的值将替换 number[i+1] 的值.至此,两个数字的值交换就完成了。

需要多轮冒泡排序才能对数组进行完全排序。下面的示例是冒泡排序算法工作原理的直观表示。

第一轮冒泡排序:

( 5 1 4 2 8 ) –> ( 1 5 4 2 8 ),这里算法比较前两个元素,从 5 > 1 开始交换。

( 1 5 4 2 8 ) –> ( 1 4 5 2 8 ), Swap since 5 > 4

( 1 4 5 2 8 ) –> ( 1 4 2 5 8 ),从 5 > 2

开始交换

( 1 4 2 5 8 ) –> ( 1 4 2 5 8 ),现在,由于这些元素已经有序 (8 > 5),算法不会交换它们。

第二轮冒泡排序:

(1 4 2 5 8) –> (1 4 2 5 8)

( 1 4 2 5 8 ) –> ( 1 2 4 5 8 ), Swap since 4 > 2

(1 2 4 5 8) –> (1 2 4 5 8)

(1 2 4 5 8) –> (1 2 4 5 8)

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 2018-11-13
    • 2014-02-25
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    相关资源
    最近更新 更多