比较3(n-2)/2次数选出最大值和最小值
//第九章例题,以3(n-2)/2次比较同时选择出数组中最大值和最小值
//常规思想是通过两轮比较分别选择出最大值和最小值,优化的方法中采用了只比较一轮,
//同时选出两个数先比较一下,将大的与最大值比较,小的与最小值比较
#include<iostream>
using namespace std;
//判断数组中元素个数是奇数个还是偶数个
bool OddNumber(int n)
{
if(n%2==0)
{
return 0;
}
else
return 1;
}
//循环一遍同时找出最大值和最小值
//如果是奇数个则将第一个元素同时赋给最大值和最小值
//如果是偶数个元素,则将前两个中较大的赋给最大值,较小的赋给最小值
void FindMinAndMax(int a[],int length,int &min,int &max)
{
int i,little,big;
if(length==0)
return;
//偶数个元素将前两个元素赋给min和max
if(!OddNumber(length))
{
min=a[0]<a[1]?a[0]:a[1];
max=a[0]>a[1]?a[0]:a[1];
i=2;
}
//奇数个元素将第一个赋给min和max。
else
{
min=max=a[0];
i=1;
}
for(int j=i;j<length-1;j+=2)
{
little=a[j]<a[j+1]?a[j]:a[j+1];
big=a[j]>a[j+1]?a[j]:a[j+1];
if(min>little)
min=little;
if(max<big)
max=big;
}
}
int main()
{
int max,min,i;
int a[20];
for(i=0;i<20;i++)
{
a[i]=rand()%100;
cout<<a[i]<<" ";
}
cout<<endl;
FindMinAndMax(a,20,min,max);
cout<<min<<endl;
cout<<max<<endl;
return 0;
}
分享到:
相关推荐
算法导论,第九章,chp9中位数和顺序统计量,C#和C++代码实现。
算法导论第四章答案算法导论第四章答案算法导论第四章答案算法导论第四章答案
能用代码表示的都用代码表示,不能表示的写出思路,思路都没写的就是我也做不出来
第9章 中位数和顺序统计学 第三部分 数据结构 第10章 基本数据结构 第11章 散列表 第12章 二叉查找树 第13章 红黑树 第14章 数据结构的扩张 第四部分 高级设计和分析技术 导论 第15章 动态规划 第16章 贪心算法 第17...
能用代码表示的都用代码表示,不能表示的写出思路,思路都没写的就是我也做不出来
算法导论第15章-动态规划的课后习题参考答案,对于算法爱好者而言,是不错的参考资料。
算法导论 第二十五章 答案 算法导论 第二十五章 答案 算法导论 第二十五章 答案
中国科学技术大学 算法导论 课件 计算机相关专业必修
算法导论第二十四章答案 算法导论第二十四章答案 算法导论第二十四章答案
最近在研习算法导论,发现课后习题的精彩程度甚至不亚于正文,对于算法导论的爱好者而言,这是一份不错的参考资料
算法导论第三版课后习题答案 只有部分的答案
算法导论大作业:股票买卖最佳时期系列问题 南开大学 算法导论源码算法导论大作业:股票买卖最佳时期系列问题 南开大学 算法导论源码算法导论大作业:股票买卖最佳时期系列问题 南开大学 算法导论源码算法导论大作业...
第9章 中位数和顺序统计学 第三部分 数据结构 第10章 基本数据结构 第11章 散列表 第12章 二叉查找树 第13章 红黑树 第14章 数据结构的扩张 第四部分 高级设计和分析技术 导论 第15章 动态规划 第16章 贪心算法 第17...
第9章 中位数和顺序统计学 第三部分 数据结构 第10章 基本数据结构 第11章 散列表 第12章 二叉查找树 第13章 红黑树 第14章 数据结构的扩张 第四部分 高级设计和分析技术 导论 第15章 动态规划 第16章 贪心算法 第17...
算法导论书第九章的油井问题,求解中位数。
本资源主要提供算法导论课后题答案第二章到第九章的中英文详解。
算法导论 第三版 中文pdf
能用代码表示的都用代码表示,不能表示的写出思路,思路都没写的就是我也做不出来
31~35章
算法导论第二版+习题答案,这是第二部分