Я получаю неправильный вывод для любого введенного значения, например, если я ввел 5,4,3,2,1, выход 1,1,1,1,1 .. Я использовал алгоритм сортировки пузырьков в функции bubblesort ... и передал массив A функции, но вывод состоял только из последнего введенного значения i.Получение неправильного вывода при сортировке пузырьков
#include <stdio.h>
#define SIZE 5
void bubblesort(int A[]);
int main(void)
{
int A[SIZE]={0};
int i;
puts("Enter value to store it in integer");
for(i=0;i<SIZE;i++)
{
scanf("%d",&A[i]);
}
puts("");
bubblesort(A);
}
void bubblesort(int A[])
{
int i,j;
for(i=0;i<SIZE;i++)
{
for(j=0;j<4;j++)
{
if(A[j]>A[j+1])
{
int temp;
temp=A[j+1];
A[j]=A[j+1];
A[j]=temp;
}
}
}
for(i=0;i<SIZE;i++)
{
printf("%d ",A[i]);
}
}
'A [J] = A [J + 1];' РЕКОМЕНДУЕМЫМ be 'A [j + 1] = A [j];' – BLUEPIXY
swap выполняется так 'temp = A [j]; A [j] = A [j + 1]; A [j + 1] = temp; ' –
Чтобы освободить сортировку пузырьков от использования фиксированного' # define', рассмотрите возможность передачи размера массива, который нужно отсортировать (то есть 'void bubblesort (int * a, size_t n)'), а также удалить все выходные процедуры из функции и поместить их обратно в вызывающий (т.е. 'main()'). ** Примечание: ** ваши объявления цикла будут (например, 'for (i = 0; i <(int) n; i ++)') с литой, необходимой, чтобы избежать сравнения значений с подписью и без знака. ('n' должен быть' size_t' (без знака), потому что он никогда не будет отрицательным) –