我试图在每次传递后输出数组的组合但是,我不确定如何去做。我不确定打印功能是否需要一个额外的循环来打印每一遍。样本输出应该是这样的(我也很困惑如何使输出看起来像这样,因为我尝试将cout<<<<" Array&#34 ;;在打印功能中但是在每次打印后都重复了) :
原始数组: 6 1 4 2 8(随机生成)
泡泡分类的传递:
最终数组: 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;
}
谢谢。任何帮助将不胜感激。
答案 0 :(得分:0)
您只需在每次成功交换时添加print(a)。所以内部冒泡排序功能 - &gt;迭代For循环 - &gt; if(ith&gt; i + 1th)成功 - &gt;交换和打印。