gpt4 book ai didi

c - 希尔排序的时间复杂度

转载 作者:行者123 更新时间:2023-11-30 16:50:14 26 4
gpt4 key购买 nike

为什么希尔排序的时间复杂度比冒泡排序和插入排序要低?我们如何计算时间复杂度,我的意思是我们在什么基础上认为我们的代码时间复杂度高或低?

#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;
}

最佳答案

关于你的问题我们在什么基础上认为我们的代码时间复杂度高或低对于具有 N 个元素的排序算法,需要考虑的一个简单的事情是进行多少次比较来对元素数组进行排序。比较进一步导致元素交换,这意味着系统 (CPU) 上使用了更多资源。

冒泡/插入排序最终可能会进行 n^2 次比较(如果不进行交换,则可以进行优化,然后不再扫描已排序的数组)。希尔排序经过改进,在某些情况下比 n^2 表现更好。维基百科指针是一个很好的引用,但建议阅读一本专门处理排序的算法书籍,以获得更清晰的信息(数据结构和算法分析 - Mark Allen Weiss 或其他人)

关于c - 希尔排序的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42283572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com