读书人

与此同时求最大最小

发布时间: 2013-01-17 10:28:54 作者: rapoo

同时求最大最小
怎样编程,从5个数中取最大和最小,求指教。。。。。。。。。
[解决办法]
冒泡排序过后,去头尾元素啊。
[解决办法]


#include <stdio.h>
void main()
{
int i,j;
int temp=0;
int a[5]={3,5,2,6,4};
for(j=0;j<4;j++){
for(i=0;i<4;i++){
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;

}
}
}
printf("最大值:%d\n最小值:%d\n",a[4],a[0]);
}


[解决办法]

#include <stdio.h>

#define COUNT(5)

int main(int argc, char* argv[])
{
int a[COUNT] = {12, 8, 9, 20, 10};
int min, max;
int i;

max = min = a[0];
for(i = 1; i < COUNT; i++)
{
if(min > a[i])
min = a[i];
if(max < a[i])
max = a[i];
}
printf("min=%d, max=%d\n", min, max);

return 0;
}

[解决办法]
#include "stdio.h"
void main()
{
int i,j,tem,k,a[10];
int max,min;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
printf("a[%d]=%d\n",i,a[i]);
}
for(i=0;i<=9;i++)
{
for(j=0;j<10-i;j++)
{
if(a[j]>a[j+1])
{
tem=a[j];
a[j]=a[j+1];
a[j+1]=tem;
}
}
}
printf("after sorted \n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
min=a[1];
max=a[10];
printf("\n");
printf("最小值%d",a[1]);
printf("最大值%d",a[10]);

}

此回复必看
[解决办法]
引用:
C/C++ code?12345678910111213141516171819202122#include <stdio.h> #define COUNT (5) int main(int argc, char* argv[]){ int a[COUNT] = {12, 8, 9, 20, 10}; int min, max; int i; ……


这才是正解
[解决办法]
通常的做法对数组的每个数要操作二次,先与最大的比,然后与最小的比。费时O(2 * N)。

《编程之美》上面讲过一种费时为O(1.5 * N)的解法,代码如下:

void FindMinMax(int A[],int size,int &min,int &max)
{
max=-INF;
min=INF;
for(int i=0;i<size-1;i++)
{
if(A[i]<A[i+1])
{
if(A[i+1]>max)
max=A[i+1];
if(A[i]<min)
min=A[i];
}
else
{
if(A[i]>max)
max=A[i];
if(A[i+1]<min)
min=A[i+1];
}

}

}


详细的解释可以看:http://www.myexception.cn/program/797087.html
[解决办法]
boost::minmax_element


轻松解决

int main()
{
using namespace std;
boost::tuple<int const&, int const&> result1 = boost::minmax(1, 0);

assert( result1.get<0>() == 0 );
assert( result1.get<1>() == 1 );

list<int> L;
generate_n(front_inserter(L), 1000, rand);

typedef list<int>::const_iterator iterator;
pair< iterator, iterator > result2 = boost::minmax_element(L.begin(), L.end());
cout << "The smallest element is " << *(result2.first) << endl;
cout << "The largest element is " << *(result2.second) << endl;

assert( result2.first == std::min_element(L.begin(), L.end());
assert( result2.second == std::max_element(L.begin(), L.end());
}

读书人网 >C语言

热点推荐