Почему временная сложность меньше при сортировке оболочки по сравнению с сортировкой и сортировкой пузырьков? Как мы можем рассчитать сложность времени, я имею в виду, на каком основании мы считаем, что наш код отличается высокой или низкой степенью сложности?временная сложность в сортировке оболочки
#include <stdio.h>
void shellsort(int arr[], int num)
{
int i, j, k, tmp;
for (i = num/2; i > 0; i = i/2)
{
for (j = i; j < num; j++)
{
for (k = j - i; k >= 0; k = k - i)
{
if (arr[k + i] >= arr[k])
break;
else
{
tmp = arr[k];
arr[k] = arr[k + i];
arr[k + i] = tmp;
}
}
}
}
}
int main()
{
int arr[30];
int k, num;
printf("Enter total no. of elements : ");
scanf("%d", &num);
printf("\nEnter %d numbers: ", num);
for (k = 0; k < num; k++)
{
scanf("%d", &arr[k]);
}
shellsort(arr, num);
printf("\n Sorted array is: ");
for (k = 0; k < num; k++)
printf("%d ", arr[k]);
return 0;
}
Прочтите это https: //en.m .wikipedia.org/wiki/Time_complexity –
Асимптотическая сложность сортировки Shell - сложный вопрос, ответ на который зависит от деталей реализации (см. https://en.wikipedia.org/wiki/Shellsort). Это гораздо шире вопрос, чем соглашается SO. –
формат кода, орфография/грамматика – Constantin