C 为什么我的排序会打印多个列表?

C 为什么我的排序会打印多个列表?,c,bubble-sort,C,Bubble Sort,我试着做这个冒泡排序,当我运行它时,它会打印出原始的,两个未排序的“排序”列表,最后是实际排序的列表。我怎样才能摆脱额外的“分类” #包括 #包括 #包括 #定义尺寸9 内部主(空) { int-ray[SIZE]={8,1,5,8,1,2,4,5,9}; int i、temp、交换; 对于(i=0;i

我试着做这个冒泡排序,当我运行它时,它会打印出原始的,两个未排序的“排序”列表,最后是实际排序的列表。我怎样才能摆脱额外的“分类”

#包括
#包括
#包括
#定义尺寸9
内部主(空)
{
int-ray[SIZE]={8,1,5,8,1,2,4,5,9};
int i、temp、交换;
对于(i=0;i对于(i=0;i您的
print
语句位于
while
循环内,因此每次迭代都要打印。您需要将
print
语句移到
while
循环外,以便在排序完成后打印

while(1){
    swapped = 0; // when swapped = 1, loop repeats, when 0, it ends
    for( i=0; i<SIZE-1; i++){ //the -1 ends it at the second to last digit in the array
        if( ray[i] > ray[i + 1]){
            temp = ray[i];
            ray[i] = ray[i + 1]; // this whole block does the swapping
            ray[i + 1] = temp;
            swapped=1;
        }
    }
    if(swapped==0){
        break;
    }
}

printf("\n Sorted Red ID\n");
for(i=0; i<SIZE; i++){
    printf(" %d\n", ray[i]);
}
while(1){
swapped=0;//当swapped=1时,循环重复,当0时,循环结束
对于(i=0;i射线[i+1]){
温度=射线[i];
ray[i]=ray[i+1];//整个块进行交换
射线[i+1]=温度;
交换=1;
}
}
如果(交换==0){
打破
}
}
printf(“\n已排序的红色ID\n”);

对于(i=0;i您希望如何处理语句
ray[i];
?如果您在循环中打印,也许您应该在循环之外执行该操作?这不起任何作用:对于(i=0;iwhile(1){ swapped = 0; // when swapped = 1, loop repeats, when 0, it ends for( i=0; i<SIZE-1; i++){ //the -1 ends it at the second to last digit in the array if( ray[i] > ray[i + 1]){ temp = ray[i]; ray[i] = ray[i + 1]; // this whole block does the swapping ray[i + 1] = temp; swapped=1; } } if(swapped==0){ break; } } printf("\n Sorted Red ID\n"); for(i=0; i<SIZE; i++){ printf(" %d\n", ray[i]); }