我是靠谱客的博主 懵懂冬瓜,最近开发中收集的这篇文章主要介绍【算法】最接近数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 最接近数

题目描述

设计算法求数组中相差最小的两个元素(称为最接近数)的差

输入

输入的第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;
}

 

应老师要求要比较时间。有错误感谢指出!

最后

以上就是懵懂冬瓜为你收集整理的【算法】最接近数的全部内容,希望文章能够帮你解决【算法】最接近数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部