问题是当数据排序时它会加倍:
数据:20,5,9,8,7
输出是:
20, 5, 9, 8, 7
5, 20, 9, 8 ,7
5, 20, 9, 8 ,7
5, 20, 9, 8 ,7
5, 20, 9, 8 ,7
5, 9, 20, 8 ,7
5, 8, 20, 9 ,7
5, 7, 20, 8 ,7
5, 7, 9, 20 ,7
5, 7, 8, 20 ,7
5, 7, 8, 9 ,20
5,20,9,8,7部分重复4次,我怎样才能删除它?
for(i=0; i<r; i++)
{
System.out.print(data[i]+"\t");
}
System.out.print("\n");
for(i=0; i<size; i++)
{
smallest=i;
for(j=i+1; j<size; j++)
{
if(data[i] > data[j] )
{
temp = data[j];
data[j] = data[smallest];
data[smallest] = temp;
}
for(k=0; k<size; k++)
System.out.print(data[k]+"\t");
System.out.print("\n");
}
}
答案 0 :(得分:0)
5 20 9 8 7正在发生,因为一旦你将5放在0点,它就不再需要交换了。 5是数组中最小的项,因此它只需要检查数组中的其他元素以确保它。删除这些迭代的唯一方法是更改排序方法
答案 1 :(得分:0)
错误代码显示数据: U删除没有循环j的循环
for(i=0; i<r; i++)
{
System.out.print(data[i]+"\t");
}
System.out.print("\n");
for(i=0; i<size; i++)
{
smallest=i;
for(j=i+1; j<size; j++)
{
if(data[i] > data[j] )
{
temp = data[j];
data[j] = data[smallest];
data[smallest] = temp;
}
}
for(k=0; k<size; k++)
{
System.out.print(data[k]+"\t");
System.out.print("\n");
}
}