У меня есть четыре целых числа, хранящихся в переменных. Каким образом можно найти самый большой, второй по величине, третий и самый маленький? Есть ли элегантный способ сделать это, не написав длинный код?Сортировка четырех целых чисел: VBA Excel
ответ
Наиболее элегантными и распространенными способами сортировки целых чисел являются алгоритмы Quicksort и Bubblesort.
Но если у вас есть только четыре целых числа, это может быть немного перебор. Таким образом, вы также можете реализовать простой алгоритм if-else
.
Quicksort
Private Sub QuickSort(_
ByRef ArrayToSort As Variant, _
ByVal Low As Long, _
ByVal High As Long)
Dim vPartition As Variant, vTemp As Variant
Dim i As Long, j As Long
If Low > High Then Exit Sub
vPartition = ArrayToSort((Low + High) \ 2)
i = Low: j = High
Do
Do While ArrayToSort(i) < vPartition
i = i + 1
Loop
Do While ArrayToSort(j) > vPartition
j = j - 1
Loop
If i <= j Then
vTemp = ArrayToSort(j)
ArrayToSort(j) = ArrayToSort(i)
ArrayToSort(i) = vTemp
i = i + 1
j = j - 1
End If
Loop Until i > j
If (j - Low) < (High - i) Then
QuickSort ArrayToSort, Low, j
QuickSort ArrayToSort, i, High
Elsea
QuickSort ArrayToSort, i, High
QuickSort ArrayToSort, Low, j
End If
End Sub
BubbleSort
For j = UBound(ArrayToSort) - 1 To LBound(ArrayToSort) Step -1
For i = LBound(ArrayToSort) To j
If ArrayToSort(i) > ArrayToSort(i + 1) Then
vTemp = ArrayToSort(i)
ArrayToSort(i) = ArrayToSort(i + 1)
ArrayToSort(i + 1) = vTemp
End If
Next i
Next j
спасибо! не кажется легко понятным, но, но попробует! –
4 элементы могут быть отсортированы с использованием 5 если заявления/своп (сортировка сети):
if (a[0] > a[2]) { swap(a[0], a[2]); }
if (a[1] > a[3]) { swap(a[1], a[3]); }
if (a[0] > a[1]) { swap(a[0], a[1]); }
if (a[2] > a[3]) { swap(a[2], a[3]); }
if (a[1] > a[2]) { swap(a[1], a[2]); }
спасибо. Интересно, на каком языке написан код? И может ли метод «своп» использоваться в VBA для Excel, или есть альтернатива? –
Это псевдокод или C++ с пространством имен std для функции swap. Чтобы поменять a и b, используя временную переменную t, используйте | t = a | a = b | b = t | , Вот [пример обмена VBA] (http://www.excel-easy.com/vba/examples/swap-values.html). – rcgldr
- 1. Сортировка целых чисел
- 2. Сортировка целых чисел массива
- 3. Назначение и сортировка целых двухмерных целых чисел
- 4. Сортировка массива целых чисел C
- 5. Сортировка целых чисел в MIPS
- 6. JavaScript сортировка строки целых чисел
- 7. сортировка целых чисел в haskell
- 8. Сортировка целых чисел с массивом.
- 9. Сортировка двух массивных целых чисел
- 10. Сортировка целых чисел в сборке
- 11. Сортировка целых чисел с ограничениями
- 12. Сортировка массива десятичных чисел и целых чисел
- 13. Показать максимальное военное время с заданных четырех целых чисел
- 14. Хеширующая функция для четырех целых чисел без знака (C++)
- 15. Смещение четырех целых чисел с разными значениями. SIMD
- 16. сортировка целых чисел в arraylist объектов
- 17. Сортировка трех целых чисел в командной строке
- 18. Сортировка на основе наименьшего числа целых чисел
- 19. Сортировка положительных целых чисел в несортированном массиве
- 20. Счетчик счетчиков целых чисел Мудрая сортировка
- 21. Сортировка 2d массива целых чисел в C#
- 22. Сортировка длинных целых чисел с Java TableRowSorter
- 23. сортировка целых чисел в списках в ящиках
- 24. Сортировка вектор с фиксированным числом целых чисел
- 25. Сортировка целых чисел и строк Java
- 26. сортировка списка целых чисел в файле данных
- 27. Сортировка целых чисел в строке с TSQL
- 28. Сортировка подсписок в списке целых чисел Python
- 29. Excel VBA Collection Merge Сортировка
- 30. Автоматическая сортировка с Excel - VBA
Вы можете использовать функции SMALL и LARGE из Excel. –
не могли бы вы интерпретировать это как пример кода? –
Извинения, я понял вопрос как диапазон рабочего листа, а не 4 переменные. –