设计n个数的排序算法,并要求计算算法复杂度

2022-12-28 18:51

1个回答
你要用什么排序算法呢
如果是冒泡排序,那么时间复杂度为f(n)=O(n²)。
#include
#include
void
sort(int
*arr,int
n)
{
int
i,j,temp;//1次
for(i=0;ifor(j=0;j//
=n(n-1)/2
{
if(arr[j]>arr[j+1])//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
{
temp=arr[j];//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
arr[j]=arr[j+1];//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
arr[j+1]=temp;//(n-2)+(n-3)+...+3+2+1=(n-1)(n-2)/2
}
}
}
//时间复杂度f(n)=1+(n+1)+n(n-1)/2+4×(n-1)(n-2)/2
//
=xn²+yn+z
这里的
x,y,z都算常量,如果你想计算就去算
//因为时间复杂度至于n的方数有关,所以f(n)=O(n²)
int
main()
{
int
n;
printf("input
n:\n");
scanf("%d",&n);
int
*arr
=
(int*)malloc(sizeof(int)*n);
printf("input
the
%d
numbers:\n");
for(int
i=0;i{
scanf("%d",&arr[i]);
}
sort(arr,n);
printf("output
the
sort
array:\n");
for(int
j=0;j{
printf("%d
",arr[j]);
}
printf("\n");
free(arr);
return
0;
}
//上面算排序算法的实现和算法的时间复杂度的计算过程以及结果。要说的时算法的复杂度主要是时间复杂度,不去研究空间复杂度
相关问答
计算程序的频度和时间复杂度
1个回答2022-09-12 02:12
频度就是语句执行的次数,这个问题是: 时间复杂度就是将频度趋于无穷大时的阶次,忽略掉低次和常量,这个问题就是O(n^2),即平方阶次的
算法的时间复杂度和空间复杂度是怎么计算的
1个回答2023-02-21 00:06
时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小. 不过一般我们说的时间复杂度是指他运行时计算的次数, 空间复杂度是指运行完一个程序所需内存的大小.
排序算法zui最好情况下时间复杂度为n的算法有哪些
1个回答2022-09-10 15:42
理论上只有计数排序。 开一个数组a 每读一个数字x,那么a[x]就加一 例如读入4那么a[4]就加1,最后再遍历一边。
用计算器怎么计算一个数的n次方
1个回答2022-12-06 02:36
首先输入底数,然后按x^y键,或者^键(不同的计算器,按键印字可能不同),然后输入指数,再按等于键即可。 例如:计算12的34次方,按键如下: 1 2 ^ 3 4 = 计算结果:4922****429...
全文
用计算器怎么计算一个数的n次方?
1个回答2022-12-01 22:46
比如A是B的n次方 即A=B^n 那么在计算器上取对数得到 log A=log B^n 即log A=n log B 所以n=(logA / logB)
关于算法设计(内容请进来看)
1个回答2024-03-09 21:43
这个是所谓的高等数学秦九韶算法 其实就是不断提出x f(x)=x(2x^3+3x-3)+5=x(x(2x^2+3)-3)+5 如上变化以后乘法运算4次,加法运算3次。
一个算法是如何从设计到被写出的?
1个回答2024-04-23 03:19
一个算法如何从设计到被算出应该是从一个结果,然后让你有一个算法。
计算器怎么算n次方
1个回答2023-03-17 19:06
科学型计算器上有个按钮是x^y,就是计算n次的。比如5的46平方,先按5,再按这个按钮,然后按46就直接得到结果.
自由度是怎么计算的
2个回答2023-01-12 19:15
X Y Z 三个坐标轴,各个轴向移动算一个自由度、旋转算一个。 限制哪一个,就减少一个自由度。
热门问答