概述
- 最接近数
题目描述
设计算法求数组中相差最小的两个元素(称为最接近数)的差
输入
输入的第1行有1个正整数n,表示数组中的元素个数,接下来的一行有n个整数,表示数组中从最小下标开始的n个元素的值,这些整数以空格分隔,。
输出
输出数组中相差最小的两个元素的差,如果有多个相同的差,只输出一个。
样例输入
6
10 5,11,16,30,14
样例输出
1
解题思路:
一、采用暴力循环的方法,比较每个数与另一个数的差,留下最小的那个。
二、将数组进行排序,然后比较相邻两个数值得差,留下最小的
#include<stdio.h>
#include<math.h>
#include<time.h>
void sort(int a[],int n){
int i,j,k;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;i++){
if(a[i]>a[j]){
k=a[i];
a[i]=a[j];
a[j]=k;
}
}
}
}
int main(){
int n,a[100],i,j,min,k,b[100];
clock_t start,finish;
double totaltime;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
min =abs(a[0]-a[1]);
for (i=0;i<n;i++) b[i]=a[i];
//1.
start=clock();
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
k=abs(a[i]-a[j]);
if(k<min) min=k;
}
}
finish=clock();
totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
printf("n该方法运行时间为:%f",totaltime);
//2.
start=clock();
sort(b,n);
for(i=0;i<n-1;i++){
k=abs(b[i]-b[i+1]);
if(k<min) min=k;
}
finish=clock();
totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
printf("n该方法运行时间为:%f",totaltime);
printf("n最小差为:%d",min);
return 0;
}
应老师要求要比较时间。有错误感谢指出!
最后
以上就是懵懂冬瓜为你收集整理的【算法】最接近数的全部内容,希望文章能够帮你解决【算法】最接近数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复