本文实例展示了C语言实现最大间隙问题的方法,对于算法的设计有一定的借鉴价值。分享给大家供大家参考。具体如下:
问题描述如下:
给定n个实数x1,x2,...,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[]){
int i;
float maxgap,dhigh,temp;
dhigh=high[1];
for(i=2;i
感兴趣的朋友可以测试运行本文实例以加深理解。相信本文所述对大家C程序算法设计的学习有一定的借鉴价值。



