我试图按递增顺序对二维数组进行排序,并将它们存储在一维数组中(从低到高)。
16 22 99 4 18
-258 4 101 5 98
105 6 15 2 45
33 88 72 16 3
但我所拥有的是保持循环,我不知道为什么
int main()
{
const int SKIP=-999999;
const int SIZE=20;
const int ROWS=4;
const int COLS=5;
int unsorted_array[ROWS][COLS]= {(16,22,99,41,18),
(-258,4,101,5,98),
(105,6,15,2,45),
(33,88,72,16,3)};
int s_index=0;
int min_value,rowMin,rowCol,row,col,colMin;
int sorted[SIZE];
cout <<"Array Sorted"<<endl
<<"___________"<<endl<<endl;
while (s_index < SIZE)
{
rowMin=0;
rowCol=0;
min_value = unsorted_array[0][0];
row=0;
while (row < ROWS)
{
col=0;
while (col < COLS)
{
if (unsorted_array[row][col] < min_value)
{
min_value = unsorted_array[row][col];
rowMin = row;
colMin = col;
}
;
col = col + 1;
}
row = row + 1;
}
sorted[s_index] = min_value;
while (sorted[s_index] >= 0)
{
cout<<" "<<sorted[s_index];
}
unsorted_array[rowMin][colMin]=SKIP;
s_index=s_index+1;
}
cout<<endl;
答案 0 :(得分:7)
如果sorted[s_index] >= 0
为真,那将是一个无限循环:
while (sorted[s_index]>=0)
{
cout<<" "<<sorted[s_index];
}
s_index永远不会在该循环内被更改。
答案 1 :(得分:3)
这是一个问题。 while条件永远不会在循环内部发生变化,因此如果谓词为真,循环将永远不会终止
while (sorted[s_index]>=0){
cout<<" "<<sorted[s_index];
}
答案 2 :(得分:2)
如果谓词为真,这是一个明显的无限循环:
while (sorted[s_index]>=0)
{
cout<<" "<<sorted[s_index];
}
答案 3 :(得分:1)
正如其他人已经指出的那样,你的cout循环是无止境的。更好用:
for (int i=0; i < SIZE ;i++){
cout<<" "<<sorted[i];
}
cout << endl;