Here you can find the source of findMinDiff(double[] values)
Parameter | Description |
---|---|
values | An array of _sorted_, _unique_ values |
public static int findMinDiff(double[] values)
//package com.java2s; /*//from ww w. ja v a 2s. co m * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ public class Main { /** * Find the 2 values with the smallest difference between them. In the case of a tie, the earlier value in the array * will be returned. Ex: findMinDiff({1, 2, 3, 4, 5}) -> 0 findMinDiff({1, 2, 2.2, 3, 4, 5}) -> 1 * * @param values An array of _sorted_, _unique_ values * * @return The index of the first number in the pair with the smallest difference. */ public static int findMinDiff(double[] values) { double minDiff; int minIdx; if (values.length < 2) { throw new IllegalArgumentException("Array length must be >= 2"); } minIdx = 0; minDiff = values[1] - values[0]; for (int i = 1; i < (values.length - 1); i++) { double diff = values[i + 1] - values[i]; if (diff < minDiff) { minDiff = diff; minIdx = i; } } return minIdx; } }