查找数组最大最小值
设计一个最优算法来查找一个n个元素数组中的最大值和最小值。一直一种需要比较2n次的方法,请给出一个更优的算法。请特别注意优化时间复杂度的常数。
void fun(int a[], int n)
{
if (a == NULL)
{
return;
}
int max = a[0];
int min = a[0];
int len = (n&1)? n : n-1;
int tempMax, tempMin;
for(int i = 1; i < len; i += 2)
{
if (a[i] > a[i+1])
{
tempMax = a[i];
tempMin = a[i+1];
}
else
{
tempMax = a[i+1];
tempMin = a[i];
}
if (tempMax > max)
{
max = tempMax;
}
if (tempMin < min)
{
min = tempMin;
}
}
if (n != len)
{
if (a[n-1] > max)
{
max = a[n-1];
}
if (a[n-1] < min)
{
min = a[n-1];
}
}
cout << "Min num is " << min << endl;
cout << "Max num is " << max << endl;
}
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: 写一个函数找出一个整数数组中,第二大的数
