2014-02-08 4 views
1

У меня есть массив целых чисел, и я хочу некоторый код для создания массива для меня с этими спецификациями:упорядочение индексов по массиву значений

  • первого элементом является индексом максимума целых значений
  • второго item - это индекс наивысшего значения, который меньше, чем max
  • Последний элемент является индексом минимума целочисленных значений.

Предположим

int totalvalue[] = {100, 120, 90, 110} 

, и я хочу, чтобы это

{1, 3, 0, 2}

+4

Этот выглядит точно так же, как вопрос, который был закрыт несколько минут назад. – Henry

+0

Вам нужен сортировочный алгоритм. Сначала можно отсортировать массив, а затем найти значение в totalvalue [] и распечатать индекс. – MiKE

+2

«Пожалуйста, сделайте мою домашнюю работу для меня». Возможно, вы можете узнать больше, сделав это самостоятельно. –

ответ

-1

Я буду брать чужой код, который недавно был удален отсюда ;-)

public static void main(String[] args){ 

     int array[] = { 90, 100, 90, 110 }; 

     Map<Integer, Integer> valueIndexMap = new HashMap<Integer, Integer>(); 
     int index = 0; 
     for (int entry : array) 
      valueIndexMap.put(entry, index++); 

     //perform your sorting algorithm here on valueIndexMap.key 

     Integer[] newArray = new Integer[array.length]; 
     for (int i = 0; i < array.length; i++) { 
      newArray[i] = valueIndexMap.get(array[i]); 
     } 

     System.out.println(Arrays.asList(newArray)); 
    } 

есть некоторые здесь https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/sorting.html

и очень важно, чтобы изучить их, потому что они основа CS

удачи

+1

И как это лучше, чем недавно удаленный код? Он не работает для не-уникальных значений в массиве. – Henry

+0

Ну, лучше, чем использовать Arrays.sort() не так, как это первоначально делалось :-) по крайней мере, этот ответ фокусируется на реальной проблеме (касающейся косвенности) без предоставления всеобъемлющего ответа, который делает домашнее задание – Leo

0

Ну вы можете сделать это: -

public static void main(String[] args) { 

     Integer totalvalue[] = { 100, 120, 90, 110 }; 

     List<Integer> original = Arrays.asList(totalvalue); 

     List<Integer> copy = new ArrayList<Integer>(original); 

     Collections.sort(copy, new Comparator<Integer>() { 

      @Override 
      public int compare(Integer intger1, Integer intger2) { 

       return intger2.compareTo(intger1); 
      } 
     }); 

     int[] finalArray = new int[totalvalue.length]; 
     for (int i = 0; i < totalvalue.length; i++) { 
      finalArray[i] = original.indexOf(copy.get(i)); 
     } 
     System.out.println(Arrays.toString(finalArray)); 
    } 
+0

hhehehe, я написал его в текстовом блоке.let me меняю это на finalArray..Dont mind the semantics –

Смежные вопросы