Как я могу отсортировать регион в массиве в Scala?
У меня есть массив, скажем var DivA = new Array[Int](100005)
.
Я заполнил элементы в DivA
до некоторой позиции, которая меньше 100005. Например, мой массив выглядит как Diva = {1,2,10,5,15,20}
.
В C ++ у нас есть sort(DivA, DivA + N)
, но как мы можем отсортировать массивы в Scala до определенного индекса?
Я пробовал Sorting.quickSort(DivA)
, но не знаю, как определить индекс, до которого я хочу отсортировать массив, чтобы приведенная выше инструкция сортирует массив, а массив выглядит как DivA={0,0,0,0,0}
?
var Diva=new Array[Int](10000);
for(j<-15 to 0 by -1){
DivA(posA)=j;
posA=posA+1;
}
Sorting.quickSort(DivA);
for(j<-0 to posA-1)
{
print(DivA(j));
print(" ");
}
4 ответа
Если вы хотите отсортировать регион в массиве, вы можете использовать метод sort
в java.util.Arrays
:
java.util.Arrays.sort(DivA, 0, 15)
Этот метод предлагает fromIndex
и toIndex
. Обратите внимание, что этот метод выполняет сортировку на месте . Вероятно, в вашем случае это нормально, поскольку стиль, который вы применяете, кажется «императивным».
Если производительность имеет значение, массивы, вероятно, будут быстрее, чем другие коллекции. Другими причинами использования массивов могут быть потребление памяти или совместимость.
В противном случае вы, вероятно, сможете разработать свои структуры данных / алгоритм другим (более «функциональным») способом, используя идиоматические коллекции Scala.
Вы можете использовать sorted
или sortBy
, в зависимости от ваших потребностей. В случае простого Array[Int]
, sorted
должно быть достаточно:
val arr = Array.iterate(15, 15)(_ - 1)
arr: Array[Int] = Array(15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
val sortedArray = arr.sorted
sortedArray: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
Вы можете предоставить свой собственный класс типов Ordering
, если хотите какой-то другой порядок.
Вы можете найти его в документации.
Хотя, как было отмечено в другом ответе, вам следует предпочесть неизменный Vector
, если у вас нет веской причины переключиться на Array
.
Метод sorted()
является общим для всех коллекций, а массивы в Scala неявно преобразуются в коллекцию. Таким образом, вы можете отсортировать вызовы по Array[Int]
, например:
scala> val p = (10 to 1 by -1).toArray
p: Array[Int] = Array(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
scala> p.sorted
res5: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Во-первых, если вы программируете на Scala, вам следует подумать о Vector или List, потому что они неизменяемы, что является предпочтительным способом программирования на Scala ...
А для Vector и List есть функция sorted (), которая сортирует массив
Похожие вопросы
Новые вопросы
arrays
Массив - это упорядоченная линейная структура данных, состоящая из набора элементов (значений, переменных или ссылок), каждый из которых идентифицируется одним или несколькими индексами. Когда вы спрашиваете о конкретных вариантах массивов, используйте вместо них следующие связанные теги: [vector], [arraylist], [matrix]. При использовании этого тега в вопросе, относящемся к языку программирования, пометьте вопрос используемым языком программирования.