解题思路
n个大小的整数数组 思路1:遍历整个数组分别得出最大值和最小值,比较次数为2n 思路2:取两个数进行比较,大的与当前最大值比较,小的与当前最小值比较,则没两个数要比较3次,比较次数为1.5n
c++代码
void GetMinMax(
int* buffer,
int& bufferLen,
int&
max,
int&
min)
{
if(buffer == NULL || bufferLen <=
0)
{
cout<<
"buffer is empty or wrong"<<endl;
return;
}
int i =
0;
int j = bufferLen -
1;
min = buffer[
0];
max = buffer[
0];
while(i <= j)
{
if(buffer[i] < buffer[j])
{
if(buffer[i] <
min)
{
min = buffer[i];
}
if(buffer[j] >
max)
{
max = buffer[j];
}
}
else
{
if(buffer[j] <
min)
{
min = buffer[j];
}
if(buffer[i] >
max)
{
max = buffer[i];
}
}
i++;
j--;
}
}
测试代码
int _tmain(
int argc, _TCHAR* argv[])
{
int buffer[
10] = {
9,
6,
1,
7,
10,
2,
4,
5,
8,-
1};
int bufferLength =
10;
int min =
0;
int max =
0;
GetMinMax(buffer,bufferLength,
max,
min);
cout<<
"min = "<<
min<<
" max = "<<
max<<endl;
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1875.html