Я сделал этот алгоритм пузырьковой сортировки в C. Он хорошо работает в DM, но при выполнении в gcc выдает неправильный вывод.
#include <stdio.h>
int i,j;
void BubbleSort(int*a, int n) //to sort the numbers
{
int temp;
for(i=0; i<n;i++)
for(j=n; j>i;j--)
if (a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
void Display(int * a, int n) //to display
{
printf("\nThe sorted numbers are:\n");
for(i=0;i<n;i++)
{
printf("%d, ",a[i]);
}
}
int main()
{
int a[50],n,choice;
printf("\nEnter no. of elements to sort: (max. 50) ");
scanf("%d",&n);
printf("\nEnter the numbers : ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
BubbleSort(a,n);
Display(a,n);
return 0;
} //End of main
Введите:
5
2 1 5 3 4
DM Выход:
1, 2, 3, 4, 5,
Выход GCC:
1, 2, 3, 5, 4,
Как и почему это происходит?