Как отсортировать по возрастанию чисел в Экселе

Для сортировки чисел по возрастанию в Excel можно применить как функции программы, так и самостоятельно создать вспомогательную формулу для динамической сортировки.

Способ 1: Кнопки быстрой сортировки

В Excel есть две универсальные кнопки, позволяющие выполнять сортировку по алфавиту, возрастанию или убыванию, если речь идет о числах. Ими пользоваться проще всего, если есть уже готовая таблица, для которой и производится сортировка. Учитывайте, что при добавлении новых значений сортировка сбивается, а для предотвращения возникновения подобной ситуации нужно запускать ее повторно или применять Способ 3 этой статьи.

  1. Сначала зажмите левую кнопку мыши и выделите все значения, которые хотите отсортировать в порядке возрастания.

Выделение значений чисел в столбце для их сортировки по возрастанию в Excel

На вкладке «Главная» разверните раздел «Редактирование» и выберите инструмент «Сортировка и фильтр».

Переход к разделу Редактирование для использования кнопок быстрой сортировки по возрастанию в Excel

В нем вы увидите два разных типа сортировок — соответственно, в рассматриваемом случае понадобится выбрать «Сортировку по возрастанию».

Нажатие по кнопке для сортировки чисел по возрастанию в Excel

Если таблица содержит другие данные вне указанного диапазона, появится уведомление с предложением расширить выделенный диапазон, чтобы соседние строки смещались относительно значений в выделенных ячейках.

Отображение уведомления с данными вне выделенного диапазона при сортировке по возрастанию в Excel

Если вы выберете расширение диапазона, то увидите, что все данные в таблице сместились относительно отсортированных значений. Отменить изменения можно нажатием по горячей клавише Ctrl + Z.

Успешная сортировка по возрастанию с расширением выделенного диапазона в Excel

Второй тип сортировки, который касается лишь пределов указанного выделения, относится только к выделенным строкам и не затрагивает соседние.

Сортировка по возрастанию в Excel без добавления диапазона вне выделенных ячеек

Описание

пример

B = sort(A) сортирует элементы A в порядке возрастания.

  • Если A вектор, затем sort(A) сортирует векторные элементы.

  • Если A матрица, затем sort(A) обрабатывает столбцы A как векторы и виды каждый столбец.

  • Если A многомерный массив, затем sort(A) действует вдоль первого измерения массива, размер которого не равняется 1, обрабатывая элементы как векторы.

пример

B = sort(A,dim) возвращает отсортированные элементы A по измерению dim. Например, если A матрица, затем sort(A,2) сортирует элементы каждой строки.

пример

B = sort(___,direction) возвращает отсортированные элементы A в порядке, заданном direction использование любого из предыдущих синтаксисов. ‘ascend’ указывает на порядок по возрастанию (значение по умолчанию) и ‘descend’ указывает на порядок убывания.

пример

B = sort(___,Name,Value) задает дополнительные параметры для сортировки. Например, sort(A,’ComparisonMethod’,’abs’) сортирует элементы A величиной.

пример

[B,I] =sort(___) также возвращает набор векторов индекса для любого из предыдущих синтаксисов. I одного размера с A и описывает расположение элементов A в B по отсортированному измерению. Например, если A вектор, затем B = A(I).

Введение в сортировку в R

Сортировка является одним из важнейших аспектов анализа данных. Это техника, в которой данные располагаются или сортируются в определенном порядке. Данные сортируются для извлечения необходимой информации из набора данных. Например, упорядочивая данные в порядке возрастания на основе ключа даты, здесь были определены критерии для сортировки. Эта операция может быть легко выполнена с использованием языка R. В языке R есть несколько функций сортировки, таких как пузырьковая сортировка и выборочная сортировка. В этой статье мы увидим важность различных функций сортировки и объясним каждую из них на примерах.

Сортировка выполняется в R

Существует несколько способов сортировки данных в R. Аналитик данных должен рассмотреть наиболее подходящий метод, основанный на структуре данных. Язык R имеет несколько функций и способов сортировки данных, таких как sort (), order () и dplyrI () package.

Что нужно иметь в виду, прежде чем сортировать данные.

  1. Порядок, в котором данные должны быть отсортированы по возрастанию или по убыванию.
  2. Критерии сортировки по нескольким столбцам.
  3. Учет отсутствующих и дублирующих значений при сортировке. Аналитик должен решить, что делать с отсутствующими и повторяющимися значениями. Перед удалением или заменой нулевых значений следует учитывать общее влияние на данные.

Функция сортировки () в R

Функция сортировки в R используется для сортировки вектора. По умолчанию значение организовано в порядке возрастания. Давайте возьмем пример столбца оценки всех учащихся в классе.

Синтаксис для сортировки вектора

“sort (x, decreasing = FALSE)”

Здесь x относится к вектору, а уменьшение должно быть заменено на TRUE, когда сортировка должна выполняться в порядке убывания. Функция сортировки используется при расположении числового или символьного вектора в нужном порядке. Основным ограничением функции сортировки является то, что ее нельзя использовать для сортировки фрейма данных. Чтобы преодолеть это ограничение, используется функция Order ().

Базовый пример сортировки с использованием функции sort ()

set.seed(1)
x <- sample(1:100, 10)
x

Выход
(1) 68 39 1 34 87 43 14 82 59 51

сортировать (х)

Выход

(1) 1 14 34 39 43 51 59 68 82 87

Сортировка фреймов данных может быть выполнена с помощью функции order (). Переменные могут быть легко отсортированы в порядке возрастания или убывания, однако функция order по умолчанию сортирует переменную по возрастанию.

> df <- data.frame(“Serial_number” = 1:5, “Age” = c(20, 21, 17, 18, 19), “Name” = c(“Johnny”, “Dorian”, “Linda”, “Cathy”, “Rick”))
>
> # Sort by age ascending order
> newdataAsc newdataAsc
sorting-r-2.png.webp
# sorting is descending order
> newdataDsc> newdataDsc newdataAsc

sorting-r-3.png.webp

Обратите внимание, что перед столбцом Age (-df $ Age) используется отрицательный знак, чтобы отсортировать возраст по убыванию. Альтернативно, в этой позиции можно использовать нисходящий аргумент. Функция Order используется для ссылки на индекс столбца, а не на имя столбца. Например, вместо возраста указатель индекса для фрейма данных будет «1». Помня о значениях индекса, начинаются с «0».

В некоторых случаях нам может понадобиться отсортировать данные по нескольким критериям, этого можно достичь в R с помощью использования имен переменных или номеров индексов. В приведенном ниже примере я использовал набор данных mtcars, который доступен в R studio.

df <- mtcars
> df
> # sort the dataframe by key disp
> df(with(df, order(mpg, disp)), ) sorting-r-4.png.webp
> # Sort by column index values
> df(order( df(, 1), df(, 3) ), )

В R альтернативный способ сортировки данных – использование пакета dplyr. Этот пакет очень прост в использовании и надежен с доступными точными инструкциями.

> install.packages(“dplyr”)
> library(dplyr)
> df <- mtcars
>
> # sort the dataframe by key disp
> arrange(mydata, disp)

sorting-r-5.png.webp

Типы сортировки в R

R оснащен множеством алгоритмов для выполнения сортировки данных. Ниже приведены различные типы функций сортировки. Чтобы проиллюстрировать различные типы сортировки, используется выборка из 10 случайных чисел из массива.

1. Пузырьковая сортировка

В этом алгоритме два значения сравниваются бок о бок, и элементы меняются местами, когда критерии удовлетворяются. Это может быть либо в порядке возрастания, либо в порядке убывания. В пузырьковой сортировке формируются пары для элементов, доступных в переменной, и элементы сравниваются друг с другом, когда один элемент больше другого, они меняются местами. Процесс повторяется до последнего элемента.

> bubble_sort <- function (x, ascending = TRUE) (
+ n <- length(x)
+ if (ascending) (
+ for(i in 1:(n-1))(
+ for(j in 1:(ni)) (
+ if(x(j+1) < x(j)) (
+ tmp <- x (j) + x(j) <- x( j+ 1) + x(j+1) <- tmp
+ )
+ )
+ )
+ )
+ else (
+ for(i in 1:(n-1))(
+ for(j in 1:(ni)) (
+ if(x(j+1) > x(j)) (
+ tmp <- x (j) + x(j) <- x( j+ 1) + x(j+1) <- tmp
+ )
+ )
+ )
+ )
+ x
+ )
>
> x <-sample(1:100, 10)
> example <- bubble_sort(x)
> example

Выход

sorting-r-6.png.webp

2. Вставка сортировки

В алгоритме сортировки вставкой отсортированные и несортированные элементы сравниваются, а несортированный элемент помещается в подходящее место после каждой итерации.

В этом алгоритме первый элемент предполагается отсортированным, а второй элемент сохраняется отдельно как ключевой элемент. Отсортированный элемент затем сравнивается с ключом. Если отсортированный элемент больше, чем ключевой элемент, места меняются местами, и ключевой элемент является первым элементом.

> insertion_sort <- function(A)(
+ for (j in 2:length(A)) (
+ key = A(j) + i = j – 1
+ while (i > 0 && A(i) > key) (
+ A((i + 1)) = A(i) + i = i – 1
+ )
+ A((i + 1)) = key
+ )
+ A
+ )
>
>
> # testing the insertion function
> x <-sample(1:100, 10)
> example <- insertion_sort(x)
> example

Выход

sorting-r-7.png.webp

3. Выбор сортировки

Функция сортировки выбора является широко используемым алгоритмом сортировки, используемым в языке R. В этом типе сортировки наименьший элемент из несортированного списка помещается в начало списка. В алгоритме сортировки выбора наименьший элемент из массива несортированного списка выбирается и помещается в начало несортированного списка на каждой итерации. Например, в ряду чисел, расположенных в случайной последовательности, стартовый элемент или номер выбирается как минимум. На следующем шаге выбранный минимальный номер сравнивается со следующим элементом или номером. Если сравниваемый элемент меньше выбранного нами минимума, второй элемент становится минимумом. Этот процесс повторяется до последнего элемента.

> selection_sort <- function (x, ascending = TRUE) (
+ max <- length(x)
+ if (ascending) (
+ for (j in 1:(max-1))(
+ m <- x(j) + p <- j
+ for(k in (j+1):max) (
+ if(x(k) < m) (
+ m <- x(k) + p <- k
+ ) ## end if
+ ) ## end for k
+ x(p) <- x(j) + x(j) <- m
+ ) ## end for j
+ ) ## end ascending if
+ else (
+ for (j in 1:(max-1))(
+ m <- x(j) + p <- j
+ for(k in (j+1):max) (
+ if(x(k) > m) (
+ m <- x(k) + p <- k
+ ) ## end if
+ ) ## end for k
+ x(p) <- x(j) + x(j) <- m
+ ) ## end for j
+ ) ## end ascending else
+ x
+ )
>
>
> # testing the selectionsort function
> x <-sample(1:100, 10)
>
> example <- selection_sort(x)
> example

Выход

sorting-r-8.png.webp

4. Быстрая сортировка

Алгоритм быстрой сортировки работает как разделяй и властвуй. Случайный элемент выбирается как массив в массиве, а затем все остальные элементы, кроме центра, делятся на два раздела. На следующем шаге все элементы, которые меньше и больше, чем стержень, делятся на два разных раздела. Наконец, элементы сортируются с помощью рекурсии.

> # Quick sort algorithm:
> quickSort <- function(arr) (
+ # Pick a number at random.
+ mid <- sample(arr, 1)
+
+ # Place-holders for left and right values.
+ left <- c()
+ right <- c()
+
+ # Move all the smaller values to the left, bigger values to the right.
+ lapply(arr(arr != mid), function(d) (
+ if (d < mid) (
+ left <<- c(left, d)
+ )
+ else (
+ right <<- c(right, d)
+ )
+ ))
+
+ if (length(left) > 1) (
+ left <- quickSort(left)
+ )
+
+ if (length(right) > 1) (
+ right <- quickSort(right)
+ )
+
+ # Finally, return the sorted values.
+ c(left, mid, right)
+ )
>
> x <-sample(1:100, 10)
>
> RES <- quickSort(x)
> RES

Выход

sorting-r-9.png.webp

5. Объединить сортировку

Сортировка слиянием очень похожа на быструю сортировку, однако здесь массив разделен на две равные половины. Алгоритм сортировки слиянием был разделен на две части – функцию слияния и сортировки. При сортировке слиянием список разбивается на несколько подсписков, пока каждый подсписок не состоит из отдельного элемента. Слияние результатов этих подсписков является отсортированным списком.

> mmerge<-function(a, b) (
+ r<-numeric(length(a)+length(b))
+ ai<-1; bi<-1; j<-1;
+ for(j in 1:length(r)) (
+ if((ai<=length(a) && a(ai)length(b)) (
+ r(j) <- a(ai) + ai <- ai+1
+ ) else (
+ r(j) <- b(bi) + bi <- bi+1
+ )
+ )
+ r
+ )
> mmergesort<-function(A) (
+ if(length(A)>1) (
+ q <- ceiling(length(A)/2)
+ a <- mmergesort(A(1:q))
+ b <- mmergesort(A((q+1):length(A)))
+ mmerge(a, b)
+ ) else (
+ A
+ )
+ )
>
> x <-sample(1:100, 10)
>
> RES <- mmergesort(x)
> RES

Выход

sorting-r-10.png.webp

6. HeapSort

Техника сортировки кучи очень похожа на технику сортировки выбора, где наименьший элемент из несортированного списка выбирается в каждой итерации и помещается в начале списка. Тем не менее, техника heapsort использует концепции дерева.

> heap.structure<-function(vect)
+ (
+ le=length(vect)
+ heap=vec
+ for (k in le:1)
+ (
+ heap=modify_heap(heap, k)
+ )
+ return(heap)
+ )
>
>
> modify_heap<-function(heap, rooti)
+ (
+ le=length(heap)
+ flag=0
+
+ while (rooti*2 <= le && flag==1)
+ (
+ left.i=rooti*2
+ right.i=rooti*2+2
+ flag=1
+ child=c(heap(left.i), heap(right.i))
+ child=child(!is.na(child)) + min.ind=which.min(child)
+ if (heap(rooti)>child(min.ind))
+ (
+ flag=1
+ heap.ind=c(left.i, right.i)(min.ind) +
+ tmp1=heap(heap.ind) + heap(heap.ind)=heap(rooti) + heap(rooti)=tmp1
+
+ rooti=heap.ind
+ )
+ )
+ return(heap)
+ )
>
> heap_sort<-function(heap)
+ (
+ sorted.heap=NULL
+ le=length(heap)
+ while(le>0)
+ (
+ sorted.heap=c(sorted.heap, heap(1))
+ le=length(heap)
+ heap(1)=heap(le) + heap=heap(1:(le-1)) + heap=modify_heap(heap, rooti=1)
+ le=le-1
+ )
+ return(sorted.heap)
+ )
>
>
> x <- sample(1:100, 10)
> heap=heap.building(x)
> heap_sort=heap_sort(heap)
> heap_sort

Выход

sorting-r-11.png.webp

Вывод

В этой статье мы рассмотрели различные способы сортировки данных с использованием R. Мы увидели, как команда сортировки и упорядочения используется для сортировки фрейма данных, в статье были показаны дополнительные ограничения функции сортировки над функцией упорядочения. Подробное объяснение различных алгоритмов сортировки, таких как пузырьковая сортировка, выборочная сортировка и сортировка слиянием, было подробно обсуждено. Сортировка, являющаяся одним из важнейших этапов анализа данных, имеет разные функции для множества потребностей. Это полностью зависит от инженера данных, чтобы выбрать наиболее подходящий метод для сортировки на основе доступных данных.

Рекомендуемые статьи

Это было руководство по сортировке в R. Здесь мы обсуждаем, что такое сортировка в R, особенности и типы сортировки в R. Вы также можете просмотреть другие предлагаемые статьи, чтобы узнать больше –

  1. Языки науки о данных
  2. База данных в SQL
  3. Типы данных в C
  4. Типы данных PostgreSQL
  5. Введение в сортировку в таблице
  6. Вставка Сортировка в JavaScript
  7. Полное руководство по сортировке в C # с примерами
  8. Функция сортировки в Python с примерами

8 ответов

есть очень простой алгоритм, который использует только целые числа:

int number = 4214173;int sorted = 0;int digits = 10;int sortedDigits = 1;boolean first = true;while (number > 0) { int digit = number % 10; if (!first) { int tmp = sorted; int toDivide = 1; for (int i = 0; i < sortedDigits; i++) { int tmpDigit = tmp % 10; if (digit >= tmpDigit) { sorted = sorted/toDivide*toDivide*10 + digit*toDivide + sorted % toDivide; break; } else if (i == sortedDigits-1) { sorted = digit * digits + sorted; } tmp /= 10; toDivide *= 10; } digits *= 10; sortedDigits += 1; } else { sorted = digit; } first = false; number = number / 10;}System.out.println(sorted);

выводит 1123447.Идея проста:

  1. вы берете текущую цифру числа, которое хотите отсортировать (назовем ее N)
  2. вы проходите через все цифры в уже отсортированном номере (назовем его S)
  3. если текущая цифра в S меньше текущей цифры в N, вы просто вставляете цифру в текущую позицию в S. В противном случае вы просто перейдите к следующей цифре в с.

эта версия алгоритма может сортировать в обоих ASC в порядках desc, вам просто нужно изменить условие.

кроме того, я предлагаю вам взглянуть на так называемый Radix Sort, решение здесь берет некоторые идеи из сортировки radix, и я думаю, что сортировка radix является общим случаем для этого решения.

это 4 строки, основанные на for вариант цикла вашего цикла while с небольшим Java 8 spice:

int number = 4214;List<Integer> numbers = new LinkedList<>(); // a LinkedList is not backed by an arrayfor (int i = number; i > 0; i /= 10) numbers.add(i % 10);numbers.stream().sorted().forEach(System.out::println); // or for you forEach(IO::println)

Я предполагаю, что вам разрешено использовать хэширование.

public static void sortDigits(int x) { Map<Integer, Integer> digitCounts = new HashMap<>(); while (x > 0) { int digit = x % 10; Integer currentCount = digitCounts.get(digit); if (currentCount == null) { currentCount = 0; } digitCounts.put(x % 10, currentCount + 1); x = x / 10; } for (int i = 0; i < 10; i++) { Integer count = digitCounts.get(i); if (count == null) { continue; } for (int j = 0; j < digitCounts.get(i); j++) { System.out.print(i); } }}

Как сортировать число без использования массива, строки или api сортировки? Ну, вы можете отсортировать число с помощью следующих простых шагов (если слишком много читать, то см. Вывод отладки ниже, чтобы получить представление о том, как выполняется сортировка):

  1. получить последнюю цифру числа, используя (цифра = число % 10)
  2. разделить число, чтобы последняя цифра исчезла (число /= 10)
  3. цикл через цифры номера (который не имеет цифры) и проверить, если цифра самый маленький
  4. если новая меньшая цифра найдена, замените цифру = наименьшая цифра и продолжайте искать до конца
  5. в конце цикла вы нашли наименьшую цифру, сохраните ее (store = (store * 10) + digit
  6. теперь, когда вы знаете, что это наименьшая цифра, удалите эту цифру из числа и продолжайте применять вышеуказанные шаги к оставшемуся числу, и каждый раз, когда меньшая цифра найдена, добавьте ее в магазин и удалите цифру из числа (если цифра повторяется в номер, затем удалите их все и добавьте их в магазин)

Я предоставил код с двумя циклами while в основном методе и одной функции. Функция ничего не делает, но строит новое целое число, исключая цифру, которая передается, например, я передаю функцию 451567 и 1, и функция возвращает мне 45567 (в любом порядке, не имеет значения). Если эта функция передается 451567 и 5, то она находит как 5 цифр в номере, так и добавляет их в хранилище и возвращает номер без 5 цифр (это избежать дополнительной обработки).

отладка, чтобы узнать, как он сортирует целое число:

последняя цифра: 7 из числа: 451567
Subchunk является 45156
Subchunk является 4515
Subchunk составляет 451
Subchunk составляет 45
Subchunk составляет 4
Smalled цифра в 451567 составляет 1

Магазин : 1Удалить 1 из 451567

Уменьшенное число: 76554
Последняя цифра: 4 из числа: 76554
Subchunk это 7655
Subchunk составляет 765
Subchunk составляет 76
Subchunk составляет 7
Smalled цифра в 76554 составляет 4

магазин : 14Удалить 4 из 76554

Уменьшенное число: 5567
Последняя цифра: 7 из числа: 5567
Subchunk составляет 556
Subchunk составляет 55
Subchunk составляет 5
Smalled цифра в 5567 составляет 5

магазин : 145Удалить 5 из 5567

найдена повторная минимальная цифра 5. Магазин является : 145
повторенная минимальная цифра 5 добавлена в магазин. Обновленный магазин: 1455
Уменьшенное число: 76

Последняя цифра: 6 из числа: 76
Subchunk составляет 7
Smalled цифра в 76 составляет 6

магазин : 14556Удалить 6 из 76

Уменьшенное число: 7
Последняя цифра: 7 из числа: 7
Smalled цифра 7-это 7

магазин : 145567Удалить 7 из 7

Сокращается число : 0
возрастающий порядок 451567 – 145567

пример кода выглядит следующим образом:

//stores our sorted number static int store = 0; public static void main(String []args){ int number = 451567; int original = number; while (number > 0) { //digit by digit – get last most digit int digit = number % 10; System.out.println(“Last digit is : ” + digit + ” of number : ” + number); //get the whole number minus the last most digit int temp = number / 10; //loop through number minus the last digit to compare while(temp > 0) { System.out.println(“Subchunk is ” + temp); //get the last digit of this sub-number int t = temp % 10; //compare and find the lowest //for sorting descending change condition to t > digit if(t < digit) digit = t; //divide the number and keep loop until the smallest is found temp = temp / 10; } System.out.println(“Smalled digit in ” + number + ” is ” + digit); //add the smallest digit to store store = (store * 10) + digit; System.out.println(“Store is : ” + store); //we found the smallest digit, we will remove that from number and find the //next smallest digit and keep doing this until we find all the smallest //digit in sub chunks of number, and keep adding the smallest digits to //store number = getReducedNumber(number, digit); } System.out.println(“Ascending order of ” + original + ” is ” + store); } /* * A simple method that constructs a new number, excluding the digit that was found * to b e smallest and added to the store. The new number gets returned so that * smallest digit in the returned new number be found. */ public static int getReducedNumber(int number, int digit) { System.out.println(“Remove ” + digit + ” from ” + number); int newNumber = 0; //flag to make sure we do not exclude repeated digits, in case there is 44 boolean repeatFlag = false; while(number > 0) { int t = number % 10; //assume in loop one we found 1 as smallest, then we will not add one to the new number at all if(t != digit) { newNumber = (newNumber * 10) + t; } else if(t == digit) { if(repeatFlag) { System.out.println(“Repeated min digit ” + t + “found. Store is : ” + store); store = (store * 10) + t; System.out.println(“Repeated min digit ” + t + “added to store. Updated store is : ” + store); //we found another value that is equal to digit, add it straight to store, it is //guaranteed to be minimum } else { //skip the digit because its added to the store, in main method, set flag so // if there is repeated digit then this method add them directly to store repeatFlag = true; } } number /= 10; } System.out.println(“Reduced number is : ” + newNumber); return newNumber; }}

мой алгоритм это:

int ascending(int a){ int b = a; int i = 1; int length = (int)Math.log10(a) + 1; // getting the number of digits for (int j = 0; j < length – 1; j++) { b = a; i = 1; while (b > 9) { int s = b % 10; // getting the last digit int r = (b % 100) / 10; // getting the second last digit if (s < r) { a = a + s * i * 10 – s * i – r * i * 10 + r * i; // switching the digits } b = a; i = i * 10; b = b / i; // removing the last digit from the number } } return a;}

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

int number = 65356;for (int i = 0; i <= 9; i++) { // the possible elements are known, 0 to 9 int tempNumber = number; while (tempNumber > 0) { int digit = tempNumber % 10; IO.print(digit); tempNumber = number / 10; }}

словами:
1. Выведите 0 для каждого 0 в числе.
2. Распечатать 1 для каждого 1 числа.

вот простое решение :

public class SortDigits { public static void main(String[] args) { sortDigits(3413657); } public static void sortDigits(int num) { System.out.println(“Number : ” + num); String number = Integer.toString(num); int len = number.length(); // get length of the number int[] digits = new int[len]; int i = 0; while (num != 0) { int digit = num % 10; digits[i++] = digit; // get all the digits num = num / 10; } System.out.println(“Digit before sorting: “); for (int j : digits) { System.out.print(j + “,”); } sort(digits); System.out.println(“nDigit After sorting: “); for (int j : digits) { System.out.print(j + “,”); } } //simple bubble sort public static void sort(int[] arr) { for (int i = 0; i < arr.length – 1; i++) for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { int tmp = arr[j]; arr[j] = arr[i]; arr[i] = tmp; } } } }

class SortDigits { public static void main(String[] args) { int inp=57437821; int len=Integer.toString(inp).length(); int[] arr=new int[len]; for(int i=0;i<len;i++) { arr[i]=inp%10; inp=inp/10; } Arrays.sort(arr); int num=0; for(int i=0;i<len;i++) { num=(num*10)+arr[i]; } System.out.println(num); } }

Что такое случайная выборка?

Прежде чем обсуждать методы выборки, давайте предоставим небольшую справочную информацию о случайном выборе и о том, когда целесообразно его использовать.

В теории вероятностей и статистике случайная выборка – это подмножество данных, выбранных из более крупного набора данных, также известного как генеральная совокупность . Каждый элемент случайной выборки выбирается совершенно произвольно и имеет равную вероятность быть выбранным. Зачем он вам нужен? В основном, чтобы получить непредвзятое представление обо всей совокупности.

Например, вы хотите провести небольшой опрос среди своих клиентов. Очевидно, было бы неразумно рассылать анкету каждому человеку в вашей большой базе данных. Итак, кого вы побеспокоите своими вопросами? Будет ли это 100 новых клиентов, или первые 100 клиентов, перечисленные в алфавитном порядке, или 100 человек с самыми короткими именами? Ни один из этих подходов не соответствует вашим потребностям, потому что они изначально субъективны. Чтобы получить беспристрастную выборку, в которой у всех клиентов есть равные возможности быть выбранными, произведите случайный выбор, используя один из методов, описанных ниже.

Алгоритм Фишера – Йетса (Современная версия)

Тасование Фишера-Йетса (Fisher–Yates shuffle) используется для выполнения случайных перестановок множества элементов. Например, массивов или списков.

На псевдокоде алгоритм можно представить следующим образом:

Чтобыперемешатьмассивaизnэлементов(индексыэлементовот0доn1):

  длявсехiотn1до1выполнить

       j←случайноечисло0ji

       обменятьместамиa[j]иa[i]

Ниже будут приведены реализации данного алгоритма на языках Си и C#.

Случайный выбор значения из списка

В Excel нет встроенной функции для случайного выбора ячеек, но вы можете использовать одну из функций для генерации случайных чисел в качестве временного решения. Их, наверное, нельзя назвать простыми и интуитивно понятными формулами, но они работают.

Предположим, у вас есть список имен в ячейках A2:A15, и вы хотите выбрать одно из них. Это можно сделать с помощью одной из следующих формул:

=ИНДЕКС($A$2:$A$15;СЛУЧМЕЖДУ(1;СЧЁТЗ($A$2:$A$15)))

или

=ИНДЕКС($A$2:$A$15;СЛУЧМЕЖДУ(1;ЧСТРОК($A$2:$A$15)))

Вот и все! Средство выбора случайных имен для Excel настроено и готово к работе:

Примечание. Имейте в виду, что СЛУЧМЕЖДУ – это непостоянная функция, то есть она будет пересчитываться при каждом изменении, которое вы вносите в рабочий лист. В результате ваш случайный выбор из списка также будет постоянно меняться. Чтобы этого не произошло, вы можете скопировать извлеченное имя и вставить его как значение в другую ячейку (Специальная вставка > Значения). 

Естественно, эти формулы могут не только выбирать случайные имена, но также и случайные числа, даты или любые другие данные из ячеек.

Как работают эти формулы

Мы используем функцию ИНДЕКС для извлечения значения из списка на основе случайного порядкового номера, возвращаемого СЛУЧМЕЖДУ.

То есть, функция СЛУЧМЕЖДУ генерирует случайное целое число между двумя указанными вами значениями. Для нижнего порога вы указываете число 1. Для верхнего — используете СЧЁТЗ() или ЧСТРОК(), чтобы получить общее количество ячеек с данными. В результате СЛУЧМЕЖДУ() возвращает случайный номер ячейки в вашем наборе данных. Этот номер передается в функцию ИНДЕКС, сообщая ей, какую по счёту ячейку выбрать. Второй аргумент (номер столбца) можно не указывать, поскольку он у нас только один.

Примечание. Этот метод хорошо подходит для выбора одного случайного значения из списка. Если ваш выбор должен включать несколько результатов, приведенная выше формула может возвращать несколько вхождений одного и того же значения, поскольку функция СЛУЧМЕЖДУ не защищена от дубликатов. Это особенно актуально, когда вы выбираете относительно большую выборку из относительно небольшого списка. 

Эту задачу можно также решить с помощью формулы

=ИНДЕКС($A$2:$A$15;СЛУЧМЕЖДУ(1;СЧЁТ($A$2:$A$15)))

Функция СЛУЧМЕЖДУ() случайным образом выбирает позицию списка, из которой нужно взять одно значение ( для этой функции вероятность выбрать любую строку одинакова).

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

В следующем примере показано, как сделать случайный выбор в Excel без дубликатов.

Как это сделать в Excel 2003

Отличие только во внешнем виде окна, в котором мы задаем диапазон и направление сортировки.
сортировка диапазона
Покоряйте Excel и до новых встреч!

Способ 3: Формула для динамической сортировки

В завершение разберем более сложный, но гибкий способ, подразумевающий создание вспомогательной формулы, которая будет сравнивать значения в таблице и выводить на новых ячейках числа по возрастанию. Преимущество этого метода перед остальными заключается в том, что формула автоматически расширяется при добавлении новых значений в таблицу, а значит, происходит их динамическая сортировка.

  1. Активируйте первую ячейку для формулы и введите =НАИМЕНЬШИЙ. Это основная функция, которая автоматически и рассчитает необходимые значения.

Создание новой формулы для динамической сортировки по возрастанию в Excel

В скобках введите выражение (A:A;СТРОКА(A1)), где буквы столбца замените на сортируемый, а в качестве A1 используйте первое число.

Заполнение формулы для динамической сортировки по возрастанию в Excel

Растяните эту формулу до конца таблицы, чтобы в каждой ячейке отображалось соответствующее число.

Растягивание формулы для динамической сортировки по возрастанию в Excel

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

Просмотр изменений в формуле для динамической сортировки по возрастанию в Excel

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.
ЗакрытьОпишите, что у вас не получилось.

Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

Поделиться статьей в социальных сетях:

Еще статьи по данной теме:

Больше о

свернуть все

Порядок сортировки для символьных массивов и массивов строк

MATLAB® символы хранилищ как Unicode® использование схемы кодировки символов UTF-16. Символьные массивы и строковые массивы сортируются согласно порядку кодовой точки UTF-16. Для символов, которые являются также символами ASCII, этот порядок означает, что прописные письма приходят перед строчными буквами. Цифры и некоторая пунктуация также прибывают перед буквами.

Советы

  • sortrows функция обеспечивает дополнительную гибкость для подсортировки по нескольким столбцам табличных входных параметров или матрицы.

  • sort функционируйте и операторы отношения используют различные упорядоченные расположения для комплексных чисел. Для получения дополнительной информации смотрите Реляционные операции.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...