Size: a a a

2020 November 08

MS

Mikola Summer Duck in pro.algorithms
Но предположим я сделаю по копии temp для каждого массива Foos и Bars.
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Mikola Summer Duck
Я хочу отсортировать их так, будто это на самом деле vector<Keys, Foos, Bars>, где ключ для сортировки это Keys.
Ну отсортируй индексы
источник

MS

Mikola Summer Duck in pro.algorithms
Evgenii Zheltonozhskii🇮🇱
Ну отсортируй индексы
Ну вот отсортировал, что дальше?
источник

MS

Mikola Summer Duck in pro.algorithms
Вот у меня есть temp с отсортированными индексами.
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Mikola Summer Duck
Ну вот отсортировал, что дальше?
просто по ним проходишься и присваиваешь
источник

MS

Mikola Summer Duck in pro.algorithms
Evgenii Zheltonozhskii🇮🇱
просто по ним проходишься и присваиваешь
Для этого нужно будет построить новый массив.
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
x_new[i] = x[ind[i]]
источник

MS

Mikola Summer Duck in pro.algorithms
Я могу отсортировать значения свопами, дублируя только массив индексов?
источник

MS

Mikola Summer Duck in pro.algorithms
Чисто интуитивно мне кажется что должно быть можно, но я не могу обернуть свою голову вокруг этого.
источник

MS

Mikola Summer Duck in pro.algorithms
То есть, что если я буду идти по массиву индексов делая что-то вроде
for i = 0..len(indices)
   swap(values[i], values[indices[i]]);
   swap(indices[i], indices[indices[i]]);
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Mikola Summer Duck
Чисто интуитивно мне кажется что должно быть можно, но я не могу обернуть свою голову вокруг этого.
Для этого тебе надо иметь обратный массив вроде
источник

MS

Mikola Summer Duck in pro.algorithms
Ок и тут стремительно врываются инверсии пермутаций и моя голова начинает трещать по швам
источник

MS

Mikola Summer Duck in pro.algorithms
Теперь как мне построить обратный массив индексов имея „прямой“?
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Mikola Summer Duck
Теперь как мне построить обратный массив индексов имея „прямой“?
Ну ind_inv[ind[i]]=i
источник

MS

Mikola Summer Duck in pro.algorithms
Оу
источник

MS

Mikola Summer Duck in pro.algorithms
Evgenii Zheltonozhskii🇮🇱
Ну ind_inv[ind[i]]=i
Нет, погоди, Так прямой массив всегда равен обратному, нет? 🙀
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Mikola Summer Duck
Нет, погоди, Так прямой массив всегда равен обратному, нет? 🙀
Прямой
ind[i]=x
Обратный
ind_inv[x]=i
источник

MS

Mikola Summer Duck in pro.algorithms
А, да, всё правильно, это я себя перемудрил
источник

MS

Mikola Summer Duck in pro.algorithms
А, да, оно заработало, спасибо!
источник

EZ

Evgenii Zheltonozhsk... in pro.algorithms
Mikola Summer Duck
А, да, оно заработало, спасибо!
Ну значит ещё гожусь на что-то
источник