Java Array Sort getMedianIndex(float[] sorted, float value)

Here you can find the source of getMedianIndex(float[] sorted, float value)

Description

get Median Index

License

Open Source License

Declaration

public static float getMedianIndex(float[] sorted, float value) 

Method Source Code

//package com.java2s;
/**//  w  w  w.  j  a va2  s.co  m
 *
 **
 * /**
 * Copyright (C) 2012 Jean Ollion
 *
 *
 *
 * This file is part of tango
 *
 * tango is free software; you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 3 of the License, or (at your option) any later
 * version.
 *
 * 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 for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * @author Jean Ollion
 */

import java.util.Arrays;

public class Main {
    public static float getMedianIndex(float[] sorted, float value) {
        int idxMin, idxMax;
        idxMin = Arrays.binarySearch(sorted, value);
        //duplicate => median value
        idxMax = idxMin;
        while (idxMin > 0 && sorted[idxMin - 1] == sorted[idxMax])
            idxMin--;
        while (idxMax < sorted.length - 1 && sorted[idxMax + 1] == sorted[idxMin])
            idxMax++;
        if (idxMax != idxMin)
            return (idxMin + idxMax) / 2.0f;
        else
            return idxMin;
    }

    public static float getMedianIndex(double[] sorted, double value) {
        int idxMin, idxMax;
        idxMin = Arrays.binarySearch(sorted, value);
        //duplicate => median value
        idxMax = idxMin;
        while (idxMin > 0 && sorted[idxMin - 1] == sorted[idxMax])
            idxMin--;
        while (idxMax < sorted.length - 1 && sorted[idxMax + 1] == sorted[idxMin])
            idxMax++;
        if (idxMax != idxMin)
            return (idxMin + idxMax) / 2.0f;
        else
            return idxMin;
    }
}

Related

  1. countingSort(int[] array, int low, int high)
  2. deltaMetricToSortedIndicies( final double[][] deltaMetric)
  3. difference(int[] sorted1, int[] sorted2)
  4. extractFields(String[] items, int[] fields, String delim, boolean sortKeyFields)
  5. getLeftIndex(float[] sorted, float value)
  6. getNewSortedIntArray(int[] codePointArray)
  7. getSortedDistinct(int[] values)
  8. intArrayToShortArraySorted(int[] source)
  9. multiQuickSort(int[]... arrays)