首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

与此同时求最大最小

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

同时求最大最小
怎样编程,从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());
}

热点排行