我正在自学c ++并且我正在学习将用户输入的int数组传递给另一个函数,在该函数中它对数组进行排序并将其吐出到控制台。我测试了传递数组本身并且它可以正常工作,但是,我的排序确实会混淆某个地方,因为一个数字是重复的。这是我的交换代码。
while(1){
swapped = 0;
for(int i4 = 0; i4 < count; i4++){
if(sdata[i4] > sdata[i4 + 1]){
int temp = sdata[i4];
sdata[i4] = sdata[i4 + 1];
sdata[i4 + 1] = temp;
swapped = 1;
}
}
if(swapped == 0){
break;
}
}
这是运行时返回的值。
How many numbers? 5
[1] Please enter a value: 5
[2] Please enter a value: 3
[3] Please enter a value: 1
[4] Please enter a value: 2
[5] Please enter a value: 4
Original numbers: 5 3 1 2 4
Swapped numbers: 1 2 3 3 4
我尝试在新文件中重写交换只是为了测试交换本身,但由于某种原因我无法让它工作。有没有更好的方法呢?
答案 0 :(得分:0)
你可以做的是使用选择排序,其中元素交换数组中的最大和最小数字。
以下是代码:
for(int i = 0; i<count-1; i++)
{
for(int j = i+1; j<count; j++)
{
if(sdata[i] > sdata[j])
{
int temp = sdata[i];
sdata[i] = sdata[j];
sdata[j] = temp;
}
}
}