C言語による最大ギャップ問題の実施例

1979 ワード

本論文の実例はC言語の最大ギャップ問題を実現する方法を示しており、アルゴリズムの設計には一定の参考価値がある.皆さんの参考にしてください.具体的には以下の通りです
問題の説明は以下の通りです.
n個の実数x 1,x 2,…,xnを与えて、このn個の実数が実軸に隣接する2個の数の間の最大の差を求めて、線形の時間アルゴリズムの設計を要求します.
解決策:
問題の中でリニアタイムの計算方法を設計することを要求します.この要求がないなら、先に並べ替えることができます.見つけたら便利です.もっとも優れたアルゴリズムを並べ替える時間効率もnlognであることを知っている.だからいけません
区間アルゴリズムを採用した.具体的な手順は言わないで、C言語のコードを提供して、注釈があって説明します.
具体的な実現コードは以下の通りです.

#include "stdio.h"
#include "stdlib.h"
#define MAX 10000
float findmin(float data[],int n){/*           */
   int index,i;
   float min,temp;
   temp=data[0];
   for(i=1;itemp){
       temp=data[i];
       index=i;
     }
   }
   max=data[index];
   return max;
}
void initial(int n,int count[],float low[],float high[],float min,float max){/*     */
   int i;
   for(i=0;ihigh[location]) //         ,       
       high[location]=data[i];
   }
}
float findMaxGap(int n,float low[],float high[],int count[]){ /*      ,       */
/*    */
/*                ,       ,   n-1  ,     n-2  ,               */
/*                                 ,     n-1    n-2  */
/*      ,               ,           ,
                               ;          ,       */
   int i;
   float maxgap,dhigh,temp;
   dhigh=high[1];
   for(i=2;i 
 
関心のある友達はこの実例をテストして理解を深めることができます.本論文で述べたように、皆さんのCプログラムのアルゴリズム設計の学習に一定の参考価値があると信じています.