Я попытался реализовать сортировку вставкой в C, используя while и для l oop, следующим образом:
#include <stdlib.h>
int main()
{
int a[]={4,7,8,2,16,21,12,3,1};
int n=sizeof(a)/sizeof(a[0]);
int j,k,i,x;
/*for(j=0;j<n;j++)
{
k=a[j];
for(i=j-1;i>=0 && k<a[i];i--)
a[i+1]=a[i];
a[i+1]=k;
}*/
for(i=1;i<n;i++)
{
k=a[i];
j=i-1;
while(j>=0 && a[j]>k)
{
a[j+1]=a[j];
j=j-1;
}
a[j+1]=k;
}
printf("The elements of the array are: ");
for(x=0;x<n;x++)
printf("%d ", a[x]);
return 0;
}
И все работает отлично. Но, когда я пытался убрать использование переменной 'k'. Ответ печатается следующим образом:
Мой последний код выглядит следующим образом:
#include <stdlib.h>
int main()
{
int a[]={4,7,8,2,16,21,12,3,1};
int n=sizeof(a)/sizeof(a[0]);
int j,k,i,x;
/*for(j=0;j<n;j++)
{
k=a[j];
for(i=j-1;i>=0 && k<a[i];i--)
a[i+1]=a[i];
a[i+1]=k;
}*/
for(i=1;i<n;i++)
{
//k=a[i];
j=i-1;
while(j>=0 && a[j]>a[i])
{
a[j+1]=a[j];
j=j-1;
}
a[j+1]=a[i];
}
printf("The elements of the array are: ");
for(x=0;x<n;x++)
printf("%d ", a[x]);
return 0;
}
Может кто-нибудь объяснить это ?. Делает что-нибудь, изменяет значение переменной 'i' во время, пока l oop.