我正在尝试使用冒泡排序来对一组随机数进行排序。但我的代码导致混乱的订单。例如,它将排序为9 12 15 100 150,而不是排序为12 15 100 9 150.任何帮助将不胜感激。以下是我的代码。
#include <iostream>
#include <cstdlib>
using namespace std;
void sortArray(int[], int);
void showArray(const int[], int);
int main()
{
const int MIN_VALUE = 1;
const int MAX_VALUE = 200;
int numbers[MAX_VALUE];
for (int count = 0; count < MAX_VALUE; count++)
{
numbers[count] = (rand() % (MAX_VALUE - MIN_VALUE + 1)) + MIN_VALUE;
cout << numbers[count]<< endl;
sortArray(numbers, count);
showArray(numbers, count);
}
}
void sortArray(int numbers[], int size)
{
bool swap;
int temp;
do
{
swap = false;
for (int count = 0; count < (size -1); count++)
{
if (numbers[count] > numbers[count + 1])
{
temp = numbers[count+1];
numbers[count+1] = numbers[count];
numbers[count] = temp;
swap = true;
}
}
} while (swap);
}
void showArray(const int numbers[], int size)
{
for (int count = 0; count < size; count++)
cout <<numbers[count] << endl;
}
由于
答案 0 :(得分:1)
排序代码是正确的。
唯一的问题是你正在调用排序并在填充数据的同一循环中打印出数组。
您应首先填写所有数据,然后排序,然后显示排序结果。