Сортировка Шелла, поясните код - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Кто-нибудь может построчно объяснить, что происходит в этой функции. Я немного разобрался, но многие моменты мне не понятны. Передается тут массив a[], его размер n и 2 указателя для вывода проги *p *s. Как работает сортировка шелла, я рассказать могу, а вот с кодом тяжело. Просьба объяснить построчно, а не скидывать ссылку на ресурсы, в которых идет объяснение 1-2ух строк.
void shella(int n,int a[],int *p,int *s)
{ int i=0,j,x,m,k,t=5;
  int h[]={9,5,3,2,1};
  for (m=0;m<t;m++)
 {
k=h[m];
for (i=k;i<n;i++)
  {
   x=a[i];
   j=i-k;
   (*s)++;
while ((x<a[j])&&(j>=0))
    {
     a[j+k]=a[j];
     j=j-k;
     (*s)++;
     (*p)++;
    }
if ((j+k)!=i)
    {
    a[j+k]=x;
    (*p)++;
    }
  }
 }
}

Решение задачи: «Сортировка Шелла, поясните код»

textual
Листинг программы
if ((j+k)!=i)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5