我正在尝试使用冒泡排序来排序一组随机数。但是我的代码导致了一个混乱的顺序。例如,它的排序不是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;
}
谢谢
1条答案
按热度按时间nhaq1z211#
排序代码正确。
唯一的问题是在填充数据的同一个循环中调用排序并输出数组。
您应该先填充所有数据,然后排序,最后显示排序结果。