微软面试:输出整型数组任意两个元素差的绝对值的最小值

来源:互联网 发布:java yield在Runnable 编辑:程序博客网 时间:2024/05/17 03:45
题目:有一个整数数组,请求出两两之差绝对值最小的值, 记住,只要得出最小值即可,不需要求出是哪两个数。
这是一道简单基础题,第一次代码如下(有空再优化):
#include "stdafx.h"
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int Array_Substract(int arr[],int n)
{
int brr[133], j = 0,crr[100],k=0,g=100;
for (int i = 0; i < n; i++)
{
brr[j] = arr[i];
j++;
}
for (int i = 0; i < n;i++)
for (int j = 0; j < n; j++)
{
while (i != j)
{
if (arr[i] == brr[j])
return 0;
break;
}
if (i != j&&arr[i]!=brr[j])
{
crr[k] = fabs((arr[i] - brr[j])*1.0);
k++;
}
}
for (int i = 0; i < k; i++)
{
if (crr[i]<=g)
g = crr[i];
}
return g;
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[] = { 1,2, 3 ,4,54};
int a = Array_Substract(arr, 5);
cout <<"The minimum of two arbitrary elements of the int array is"<< endl;
cout << a;
cout << endl;
return 0;
}
0 0