Представьте, что у вас есть десять различных переменных с десятичными значениями, и вам нужно сортировать их от самого низкого до самого высокого. Я знаком с различными сортировочными алогоритами, использующими разные языки программирования, но в этом случае мне нужно построить алгоритм в приложении конечного пользователя, который просто позволяет вводить некоторые специфические конструкции: он позволяет использовать «для», «в то время», , «если», но не имеет ничего общего с массивами, значит, он не может иметь дело с чем-то вроде [i], где «a» - это массив. Пожалуйста, дайте мне подсказку? Большое спасибо!Сортировка без массивов
ответ
Вы имеете в виду что-то вроде этого?
C++ код:
void sort_4(int *a1, int *a2, int *a3, int *a4)
{
if (a1 == NULL) return;
if (a2 == NULL) return;
if (*a2 < *a1) swap(*a1, *a2);
sort_5(a1, NULL, NULL, NULL);
if (a3 == NULL) return;
if (*a2 < *a3) swap(*a2, *a3);
sort_5(a1, a2, NULL, NULL);
if (a4 == NULL) return;
if (*a4 < *a3) swap(*a3, *a4);
sort_5(a1, a2, a3, NULL);
}
вы можете расширить его до 10 элементов с помощью копирования и вставки или с помощью скрипта генерации кода.
Спасибо @Ke Yang, но в этом случае я не могу вызывать метод, не рекурсивным образом. – chufabit
, тогда вам может понадобиться использовать большой объем кода для реализации сортировки. например, примерно в 50 раз сравнить 10 элементов, используя сортировку пузырьков. Вы можете написать сценарий для генерации кода. –
Ну, вы можете жестко закодировать вид пузыря. Например, представьте, у вас есть 10 переменных, a, b, c, d, e, f, g, h, i, j
:
for (int x = 0; x < 9; ++x)
{
if (a > b) swap(a,b);
if (b > c) swap(b,c);
if (c > d) swap(c,d);
if (d > e) swap(d,e);
if (e > f) swap(e,f);
if (f > g) swap(f,g);
if (g > h) swap(g,h);
if (h > i) swap(h,i);
if (i > j) swap(i,j);
}
Это не очень эффективно, но вы не будете замечать неэффективность в приложении UI, который имеет только 10 или около того пунктов. Вы можете сделать его немного более эффективным путем вложения в условном:
if (x < 9)
{
if (a > b) swap(a,b);
if (x < 8)
{
if (b > c) swap(b,c);
if (x < 7)
{
....
Но это становится громоздким в спешке и снова маленькую эффективность она дает вам не будут замечена за такой небольшой список.
- 1. Сортировка массивов без изменения ключа
- 2. Рекурсивное слияние Сортировка без массивов
- 3. Сортировка массивов (сортировка пузырьков)
- 4. Сортировка массивов регистров без методов по умолчанию
- 5. Сортировка и удаление массивов массивов
- 6. Сортировка массива массивов целочисленных массивов
- 7. Сортировка массивов, не простая сортировка
- 8. Сортировка полиморфных массивов
- 9. Удельная сложная сортировка массивов
- 10. Сортировка 2 больших массивов
- 11. Сортировка многомерных массивов
- 12. Сортировка нескольких массивов JavaScript
- 13. Сортировка массивов гиперссылок
- 14. Сортировка массивов и индексов
- 15. Сортировка списка массивов?
- 16. Сортировка массивов и хэшей
- 17. Сортировка и слияние массивов
- 18. Сортировка массива Список массивов
- 19. Сортировка массивов объектов
- 20. Java-сортировка параллельных массивов
- 21. Сортировка массивов по дате
- 22. сортировка многомерных массивов php
- 23. Сортировка массивов в параллельных
- 24. Сортировка ассоциативных массивов
- 25. Сортировка столбцов многомерных массивов
- 26. Сортировка массивов PHP
- 27. Сортировка нескольких массивов C#
- 28. Сортировка массивов классов?
- 29. Сортировка отрицательных массивов
- 30. Сортировка PERL массив массивов
Ваша проблема непонятна. Во-первых, если вы не можете писать на 'a', вы не можете сортировать inplace. Вы можете сделать его копию, отсортировать и вернуть этот массив. Или если вам нужно найти элемент min/max при вводе вам, используйте 'heap' – vish4071
. Итак, вы пытаетесь сортировать на языке, который не поддерживает массивы? –
Это решает вашу проблему http://stackoverflow.com/questions/25070577/sort-4-numbers-without-array. Расширьте 4 своим номером. –