Комментарии 42
Уж простите, но фото просто шикарное.
+19
Искал по разным источникам иллюстрацию сортировки,
нашёл на вики в статье Сортировочная станция ))
нашёл на вики в статье Сортировочная станция ))
+4
Суровая сортировочная станция, внушает
+2
А ведь есть и побольше — Bailey Yard
+1
Минусики на фото кода это такая ловушка? Я не один попробовал нажать на них?:)
+1
Я пришёл к выводу, что код проще всего оформить скриншотами.
Ссылка на исходный текст под каждым имеется.
Ссылка на исходный текст под каждым имеется.
-1
самый лучший способ — это работать с парами (std::pair <MyData * / MyData & / MyData, int>, где второе значение — начальный индекс).
+5
а для небольших порций данных, где не важна скорость, можно и самому написать простейшую сортировку с доп. массивом.
примерно так:
примерно так:
size_t len = len = m_sections.size();
for (size_t i = 0; i < len; i++)
realSectIdxRv.push_back(i);
for (size_t i = 0; i < len; i++)
{
// находим минимум среди имён [i, len]
size_t minj = i;
for (size_t j = i + 1; j < len; j++)
{
if (strcmp(m_sections[j].name.c_str(), m_sections[minj].name.c_str()) < 0)
minj = j;
}
// записываем на i-ую позицию эту строку, она i-ая по порядку
swap(m_sections[i], m_sections[minj]);
swap(realSectIdxRv[i], realSectIdxRv[minj]);
}
0
а почему бы просто не создать массив указателей на элементы, в котором они будут в изначальном порядке?
+6
Только вот в Domino хранить index, который всего лишь нужен для сохранения порядка начальной сортировки — не очень хорошо. C точки зрения ООП — это нарушение абстракции.
-1
Только вот в Domino хранить index, который всего лишь нужен для сохранения порядка начальной сортировки — не очень хорошо. C точки зрения ООП — это нарушение абстракции.
0
Лучше всего это можно сделать через boost::multi_index, контейнер именно для этого и создан.
+1
А почему не использовать пары? Для всех значений в пару записать порядковый номер и отсортировать. Потом, когда нужно будет восстановить, отсортировать по second в паре.
+2
А вот ответ на вопрос, как сортировать по second
www.cplusplus.com/reference/algorithm/sort/ см example
www.cplusplus.com/reference/algorithm/sort/ см example
0
Когда прочитал про возвращение прежнего порядка, в первую очередь подумалось вернуть данные, сохраненные перед сортировкой (:
+1
Реально используете notepad++ для разработки, или только для подсветки синтаксиса в статье?
0
Похоже, я до чего-то сильно не догоняю. Почему бы не сортировать (и дальше обрабатывать) копию исходного массива, если хочется сохранить исходный порядок? Настолько важна память или массив заоблачных размеров?
0
Бывает, что отсортированным и обработанным данным в итоге требуется исходный порядок.
0
Ну вот собственно почему бы этот порядок изначально не запомнить, вместо того, чтобы потом восстанавливать?
Я понимаю, что все свелось к уже сказанному, но чесслово, подход несколько смутил. Нехозяйственное какое-то отношение к информации :)
Я понимаю, что все свелось к уже сказанному, но чесслово, подход несколько смутил. Нехозяйственное какое-то отношение к информации :)
0
Пересортировать вновь по индексам будет примерно аналогичной операцией, как поиск элемента и установка его на нужное место.
Разве нет?
Причем памяти при этом потребуется в два раза меньше
Разве нет?
Причем памяти при этом потребуется в два раза меньше
0
тут вот на днях на просторах инета нашел за О(n):
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
:)
#!/bin/bash
function f() {
sleep "$1"
echo "$1"
}
while [ -n "$1" ]
do
f "$1" &
shift
done
wait
:)
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Сортировка данных и возвращение им прежнего порядка