您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

求数组中的最大值和最小值(不用现成的api)

时间:09-16来源:作者:点击数:
城东书院 www.cdsy.xyz

求数组中的最大值和最小值(不用现成的api)

使用模板声明函数类型

#include<iostream>
#include<vector>
using namespace std;

template<typename T>
void minmaxValue(const T v1, const T v2, T&min, T&max)
{
	if (v1 <= v2)
	{
		min = v1;
		max = v2;
	}
	else
	{
		min = v2;
		max = v1;
	}
}                    

template<typename T1, typename T2>
void myMinMax(typename T1 vt, T2& min, T2& max)
{
    //初始化min和max;
	auto vtI = vt.begin();
	minmaxValue(*vtI, *(vtI + 1), min, max);

	//如果元素为基数,则从第二个值开始
	if (vt.size() % 2 != 0) vtI++;

	for (; vtI != vt.end(); vtI += 2)
	{
		if (*vtI <= *(vtI + 1))
		{
			if (*vtI<min)  min = *vtI;
			if (*(vtI + 1)>max) max = *(vtI + 1);
		}
		else
		{
			if (*(vtI + 1)<min) min = *(vtI + 1);
			if (*vtI>max)  max = *vtI;
		}
	}
}   

void test()
{
	//初始化数组
	int a[10] =
	{ 32,12,5,99,1,5,9,12,19,23 };
	vector<int> vtd(a, a + 10);

	//前
	for (int j = 0; j<10; j++)
	{
		cout << a[j] << " ";
	}
	cout << endl << endl;

	int myMin = 0;
	int myMax = 0;

	//调用函数
	myMinMax(vtd, myMin, myMax);

	//后
	cout << "Minimum is: " << myMin << "\nMaximum is: " << myMax << endl;
}

int main()
{
	test();
	system("pause");
	return 0;
}
城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐