Сортировка Шелла, поясните код - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д