|
|
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
Пятница, вечер, мозги не работают. Есть массив, возможно в него надо вставить в известные (по индексу) места три элемента. Грубо говоря, сейчас есть код в духе: Код: java 1. 2. 3. Это работает если idxA < idxB < idxC. Но если этот порядок нарушен, то последующие вставки сдвигают уже вставленный элемент. Как бы это решить наиболее элегантно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 01:09 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
КМК в задаче - противоречие. Вставлять не двигая элементы - невозможно. Или это уже не вставка а замена получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 01:24 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
maytonКМК в задаче - противоречие. Вставлять не двигая элементы - невозможно. Или это уже не вставка а замена получается. никакого противоречия. Двигать (раздвигать) старые элементы массива нужно. Но новые должны оказаться на указанных местах: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 01:44 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
White OwlНо если этот порядок нарушен, то последующие вставки сдвигают уже вставленный элемент. Как бы это решить наиболее элегантно?Отсортировать и вставлять в порядке возрастания. В конкретном случае с тремя числами можно вместо сортировки обойтись IF-ами или min/max-ами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 02:50 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
Если вставлять "в порядке убывания", но двигать на "нужное число позиций", то получится минимизировать число перемещений. Т.е. самую "дорогую" операцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 09:28 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
тупо: Код: java 1. 2. 3. 4. не тупо: как предложил Basil A. Sidorov, только еще объединить все вставки в одну функцию, чтобы элементы перемещались только один раз, типа: Код: java 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 21:24 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
сорри, тоже туплю, мой "тупой" вариант конечно же не прокатит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2017, 21:32 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
О! Возникла мысль: :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 03:57 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
White Owl, кто мешает отсортировать три элементы про порядку их будущего места и затем в этом порядке вставить в массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 07:25 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
MasterZivWhite Owl, кто мешает отсортировать три элементы про порядку их будущего места и затем в этом порядке вставить в массив?Лениво заводить массив ради трех элементов. Было бы их десяток или переменное число - тогда массив без сомнений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 18:15 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
White Owl, прошу прощения, а что такое Код: plaintext 1. 2. какие тут дополнительные свойства (a,b,c) зашифрованы? Как они предотвращают idxA от -1? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2017, 19:09 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
boobyWhite Owl, прошу прощения, а что такое Код: plaintext 1. 2. какие тут дополнительные свойства (a,b,c) зашифрованы? Как они предотвращают idxA от -1?Да, здесь предполагается что все индексные переменные будут иметь правильные значения. И нет, этих проверок тут не показано, так как они не влияют на алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 19:38 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
White OwlО! Возникла мысль: :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Что-то аналогичное получается - предварительная подстройка значений индексов вставки. А если не вы не хотите заводить дополнительный массив в случае сортировки, то возможно есть смысл воспользоваться in-place swap: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 01:02 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЧто-то аналогичное получается - предварительная подстройка значений индексов вставки. А если не вы не хотите заводить дополнительный массив в случае сортировки, то возможно есть смысл воспользоваться in-place swap: Код: plaintext 1. Саша, ты забыл. В задаче не только индексы есть, но и значения связанные с индексом. Мало отсортировать индексы, надо еще и помнить какие именно индексы сменили значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2017, 20:00 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
White OwlSashaMercuryЧто-то аналогичное получается - предварительная подстройка значений индексов вставки. А если не вы не хотите заводить дополнительный массив в случае сортировки, то возможно есть смысл воспользоваться in-place swap: Код: plaintext 1. Саша, ты забыл. В задаче не только индексы есть, но и значения связанные с индексом. Мало отсортировать индексы, надо еще и помнить какие именно индексы сменили значения. И правда забыл. Тогда пока ничего кроме предварительной подстройки индексов вставки не приходит. Подумаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2017, 01:00 |
|
||
|
Вставка в массив.
|
|||
|---|---|---|---|
|
#18+
Если количество элементов сравнительно небольшое, то можно организовать цикл подобного вида Код: plaintext 1. 2. 3. 4. 5. Хотя это конечно не самый приятный вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2017, 22:27 |
|
||
|
|

start [/forum/topic.php?fid=16&tid=1340463]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
197ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 522ms |

| 0 / 0 |
