气泡排序不工作
BubbleSort not working
它不会第二次打印出数组。
它工作,如果我删除调用bubbleSort(…).
我不明白为什么…这种类型的行为从来没有发生过,为什么执行器会跳过第二次调用printArray(…)
?有什么建议吗?
#include <iostream>
#include <cstdlib>
using namespace std;
// STRUCT
struct Array
{
int * data;
unsigned int size;
};
// PROTYPES
void printArray( Array & );
void bubbleSort( Array & );
// MAIN
int main(int argc, char **argv)
{
Array array;
array.size = 10;
array.data = new int [ array.size ];
for ( unsigned int i = 0; i < array.size; ++i )
array.data[ i ] = rand() % 10;
printArray( array );
bubbleSort( array );
printArray( array );
return 0;
}
void printArray( Array & array )
{
for ( unsigned int i = 0; i < array.size; ++i )
cout << array.data[ i ] << ' ';
cout << endl;
}
void swap( int & m, int & n )
{
int temp = m;
m = n;
n = temp;
}
void bubbleSort( Array & a )
{
for ( unsigned int i = 0; i < a.size - 1; ++i )
for ( unsigned int j = a.size - 1; j >= i; --j )
if ( a.data[ j-1 ] > a.data[ j ] )
swap( a.data[ j-1 ], a.data[ j ] );
}
小心处理无符号数据类型。在某一时刻,"i"将为0,你将检查"j>=0",这总是正确的。因此创建了一个无限循环。
相关文章:
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序功能在C++中未按预期工作
- 解释一下这个排序算法是如何工作的?
- 快速排序函数在快速排序算法中如何工作?
- 解释标准库排序函数C++的比较谓词的工作原理?
- 排序函数如何在整数对的向量上工作?
- 合并排序实施无法正常工作
- 运算符重载在 CPP 中的排序中如何工作?
- 快速排序动态大量对象无法正常工作
- 当输入向量称为储备金时,STD ::排序无法正常工作
- 排序功能无法正常工作
- std::sort与不严格的弱排序比较器可以作为拓扑排序工作
- 实现快速排序,几乎可以工作但不能
- 排序向量<变体<...>>无法通过运算符正常工作<
- 排序函数的第三个参数如何工作
- 合并排序无法在N logN中工作
- 快速排序程序停止工作
- 气泡排序:为什么它不能正常工作?
- 这种珠子排序算法的 c++ 实现是如何工作的
- 在 C++ 中工作排序函数