C语音设计一个算法,求数组R[0...n-1]中的最大数和最小数,计算其两者之间的差值,分析算法的时间复杂度。
#include <stdio.h>
int main()
{
int n, i;
scanf("%d", &n);
int R[n];
// 输入R部分
for(i = 0; i < n; ++i)
{
scanf("%d", &R[i]);
//scanf_s("%d", &R[i]); //高版本的visual studio使用scanf_s函数
}
int Rmax = R[0],Rmin = R[0];
for(i = 0; i < n; ++i)
{
Rmax = Rmax > R[i] ? Rmax : R[i];
Rmin = Rmin < R[i] ? Rmin : R[i];
}
int diff = Rmax - Rmin;
printf("max=%d\n", Rmax);
printf("min=%d\n", Rmin);
printf("diff=%d\n", diff);
return 0;
}
时间复杂度就是O(n)
如有帮助望采纳
//数组
R={0..n-1}
//最大值初始化
max=0;
//最小值初始化
min=0;
for(int i=0;i<R.length;i++){
// 再循环中找到最大值
if (R[i]>max){
max=R[i];
}
// 在循环中找到最小值
if (R[i]<min){
min=R[i];
}
}
//循环结束后 获得最大值max和最小值min
// 最后的结果等于最大减最小
result=max-min;