Chinaunix首页 | 论坛 | 博客
  • 博客访问: 550126
  • 博文数量: 181
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1498
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-22 15:17
个人简介

用发呆的时间来理清自己的思绪

文章存档

2015年(7)

2014年(134)

2013年(40)

分类: C/C++

2014-06-03 09:02:08

     算法的基本思想是先定义两个变量分别存放最大项和次大项,然后令这两个变量分别等于a[0]和a[1]中的较者和较小者,然后用后面的每个元素跟这两个元素进行比较,依次记录下最大项和次大项的值和元素下标。
        程序代码如下:

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. #define N sizeof(a) / sizeof(a[0])

  3. int main(int argc, const char *argv[])
  4. {
  5.     int i = 0,j = 0;
  6.     int max = 0,min = 0;
  7.     int max_tag = 0, min_tag = 0;

  8.     int a[] = {12,7,3,9,10,20,32,100,54,66,77,88};
  9.     
  10.     max = a[0] > a[1] ? a[0] : a[1];
  11.     min = a[0] < a[1] ? a[0] : a[1];

  12.     for(i = 2;i < N;i++)
  13.     {
  14.         if(a[i] > max)
  15.         {
  16.             max = a[i];
  17.             max_tag = i;
  18.         }
  19.         if(a[i] < min)
  20.         {
  21.             min = a[i];
  22.             min_tag = i;
  23.         }
  24.     }

  25.     printf("the largets number is a[%d] = %d\n",max_tag,max);
  26.     printf("the smallest number is a[%d] = %d\n",min_tag,min);



  27.     return 0;
  28. }
结果如下:

点击(此处)折叠或打开

  1. litong@ltubuntu:~/studyc/c05$ gcc max_min_num_arr.c
  2. litong@ltubuntu:~/studyc/c05$ ./a.out
  3. the largets number is a[7] = 100
  4. the smallest number is a[2] = 3
        另外,还有一种方法就是使用一次冒泡排序或者选择排序算法对数组元素进行排序,便可以确定最大和次大元素以及最小和次小元素的值以及它的下标值,但是,从编程思想的角度来看,不建议使用排序的方法来实现。
阅读(586) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~