Я пытаюсь отсортировать, скажем, 10 целых чисел в порядке возрастания, используя пузырьковую сортировку в C.
Это код, который я использую:
#include<stdio.h>
void main()
{
int x[20],i,j;
float temp;
printf("Enter 10 values: \n");
for(i=0;i<10;i++)
{
printf("x[%d]: ",i+1);
scanf("%d",&x[i]);
}
for(i=0;i<10-1;i++)
{
for(j=0;j<=10-i-1;j++)
{
if(x[j]>x[j+1])
{
temp=x[j];
x[j]=x[j+1];
x[j+1]=temp;
}
}
}
printf("The sorted list in ascending order is \n");
for(i=0;i<10;i++)
{
printf("%5d",x[i]);
}
}
Проблема в том, что я получаю дополнительный ноль в качестве выходных данных, несмотря на то, что в качестве моих 10 целых чисел вводятся только ненулевые записи.
Это вход и соответствующий вывод, который я получаю. Обратите внимание, что второй вывод дает ноль, и значение 19 исчезло из отсортированного списка:
Enter 10 values:
x[1]: 4
x[2]: 2
x[3]: 7
x[4]: 4
x[5]: 8
x[6]: 2
x[7]: 3
x[8]: 9
x[9]: 13
x[10]: 19
The sorted list in ascending order is
2 0 2 3 4 4 7 8 9 13
--------------------------------
Process exited after 44.89 seconds with return value 5
Press any key to continue . . .
Я не могу найти свою точную ошибку.