вы объявляете int i
один раз здесь int m = 0,i,temp;
, затем используйте его для каждого l oop
взгляда:
for(i = 0;i<n-1,m==0;i++)
{
printf("The array when i is %d is %d",i,a[0]);
//error for(i=1;i<n;i++)//this is your infinitive loop
printf(",%d",a[i]);
printf("\n");
if(a[i]>a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
m = 1;
}
}
каждый раз, когда вы вводите этот l oop
for(i=1;i<n;i++)
printf(",%d",a[i]);
ваш i
станет 1, а затем после l oop будет 3, и это повлияет на вашу базу l oop :( после первого раза)
for(i = 0;i<n-1,m==0;i++)
ваш i
здесь всегда будет 4
, так что это инфинитив l oop
посмотрите на это
void swap(int array[], int index1, int index2) {
int temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
void sort(int array[], int startpoint, int arraylength) {
if (startpoint == arraylength - 1) return;
int minindex = startpoint;
for (int i = startpoint; i < arraylength; i++) if (array[i] < array[minindex]) minindex = i;
swap(array, startpoint, minindex);
sort(array, startpoint + 1, arraylength);
}
int main()
{
int a[30], n;
printf("Enter the number of elements\n");
scanf("%d", &n);
if (n > 30 || n < 1)
printf("The number of elements should be a natural number not exceeding 30");
else
{
int i;
for (i = 0; i < n; i++)
{
printf("Enter element number %d\n", i + 1);
scanf("%d", &a[i]);
}
sort(a,0, n);
}
return 0;
}