l changed my code but still cant figure out why it wont sort array...bubble sort only moves all elements one place to the right in my program instead of sorting array...l tired bsort and ssort and both do same thing shift elements for 1 position
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bsort(int n,int a[])
{
int i,j,k;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1]);
{
k=a[j+1];
a[j+1]=a[j];
a[j]=k;
}
}
} }
int main()
{
int i,j,k,m,n;
srand(time(0));
printf("Unesi broj clanova niza:");
scanf("%d",&n);
int a[n];
printf("Niz za sortiranje je:\n");
for(int i=0;i<n;i++) //Generisanje niza
{
a[i]=rand()%(81);
}
for(int i=0;i<n;i++)
{
printf("%3d",a[i]);
}
bsort(n,a);
printf("\n\nSortirani niz je:\n");
for(i=0;i<n;i++)
{
printf("%3d",a[i]);
}
}
a[j + 1]in a loop that runs toj=19and an array only declared to bea[20]? You're walking over your array bounds. You're also not correctly reducing your inner-loop end-point with each pass to avoid redundantly resorting already-sorted data. And though considered optional by some, Finally, bubbelsort should terminate sorting entirely on a no-swaps-appened inner-pass; its what give the algorithm O(N) on already sorted data, which you're also not doing.if (a[j] > a[j + 1]); {doesn't do what you hope/think/expect it to do....