如何在每次传递后打印数组的组合(冒泡排序)

时间:2017-10-15 23:21:57

标签: c++ arrays

我试图在每次传递后输出数组的组合但是,我不确定如何去做。我不确定打印功能是否需要一个额外的循环来打印每一遍。样本输出应该是这样的(我也很困惑如何使输出看起来像这样,因为我尝试将cout<<<<" Array&#34 ;;在打印功能中但是在每次打印后都重复了) :

原始数组: 6 1 4 2 8(随机生成)

泡泡分类的传递:

  1. 1 4 2 6 8(第一次通过后)
  2. 1 2 4 6 8(第二次通过后)
  3. 1 2 4 6 8(第3次通过后)
  4. 最终数组: 1 2 4 6 8

    以下是我目前的代码:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    unsigned int seed = int (time(0));
    const int SIZE = 8;
    double random(unsigned int& seed);
    void fill_array(int[]);
    void buble_sort(int[]);
    void swap(int&, int&);
    void print(int[]);
    
    int main()
    {
      int num_set[SIZE];
      fill_array(num_set);
      print(num_set);
      bubble_sort(num_set);
      print(num_set);
    
    return 0;
    }
    
    double random(unsigned int &seed)
    {
      const int MODULUS = 15749;
      const int MULTIPLIER = 69069;
      const int INCREMENT = 1;
      seed  = ((MULTIPLIER *seed) + INCREMENT) % MODULUS;
    
    return double (seed)/double(MODULUS);
    }
    
    void swap(int &num1,int &num2)
    {
     int temp = num2;
     num2 = num1;
     num1 = temp;
    }
    
    void bubble_sort(int a[])
    {
      bool sort_incomplete = true;
    
      while(sort_incomplete)
      {
         sort_incomplete = false;
    
         for(int i = 0; i < SIZE-1; i++)
    
            if(a[i] > a[i+1])
            {
                swap(a[i], a[i+1]);
                sort_incomplete = true;
            }
       }
     }
    
    void fill_array(int a[])
    {
       for(int i = 0; i < SIZE; i++)
         a[i] = 2 + (11 *(random(seed)));
    }
    
    void print(int a[])
    {
       for(int i = 0; i < SIZE; i++)
          cout << setw(3) <<  a[i];
    cout << endl;
    }
    

    谢谢。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您只需在每次成功交换时添加print(a)。所以内部冒泡排序功能 - &gt;迭代For循环 - &gt; if(ith&gt; i + 1th)成功 - &gt;交换和打印。