气泡排序不工作

BubbleSort not working

本文关键字:工作 排序 气泡      更新时间:2023-10-16

它不会第二次打印出数组。

它工作,如果我删除调用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",这总是正确的。因此创建了一个无限循环。