0
它不會將我第二次打印出陣列。BubbleSort不能正常工作
它可以工作,如果我刪除對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 ]);
}
謝謝。如果(a.data [j-1]> a.data [j]) swap(a。)將內部循環替換爲(unsigned int j = a.size - 1; j> i; - j) 。數據[j-1],數據[j]);現在它正在工作 – doplumi 2013-03-04 19:23:09