2回目は配列を出力しません。
bubbleSort( ... ) の呼び出しを削除すると機能します。
理由がわかりません...このタイプの動作は決して起こらないのに、エグゼキュータが2番目の呼び出しを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 ] );
}