最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。



 

#include <stdio.h>
#include <math.h>
#define MAX 100
int main()
{
     float     a[MAX]          = { 0 };
     float     b[MAX - 1]     = { 0 };
     int     num, i, j;
     printf( "输入实数个数:\n" );
     scanf( "%d", &num );
     printf( "输入实数:\n" );
     for ( i = 0; i < num; i++ )
     {
          scanf( "%f", &a[i] );
     }
     for ( i = 0; i < num; i++ )
          for ( j = 0; j < num - i - 1; j++ )
          {
               if ( a[j] < a[j + 1] )
               {
                    float swap = a[j];
                    a[j]          = a[j + 1];
                    a[j + 1]     = swap;
               }
          }
     for ( j = 0; j < num - 1; j++ )
     {
          b[j] = a[j] - a[j + 1];
     }


     for ( i = 0; i < num - 1; i++ )
          for ( j = 0; j < num - i - 2; j++ )
          {
               if ( b[j] > b[j + 1] )
               {
                    float swap = b[j];
                    b[j]          = b[j + 1];
                    b[j + 1]     = swap;
               }
          }
     printf( "%0.1f", b[num - 2] );
     return(0);
}


代码使用在线代码美化器

 

posted @ 2016-09-04 17:25  Joe.Smith  阅读(508)  评论(0编辑  收藏  举报