最大间隙问题。给定 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); }
代码使用在线代码美化器
不为失败找原因,要为成功找方法!