Доброго времени суток. Возникла необходимость отсортировать заранеее известный список случайным образом(список используется как какрточная колода). Можете подсказать, как это лучше сделать?
Случайная сортировка списка Turbo pascal
Started By
phoenix54
, июн 08 2010 19:33
6 ответов в теме
#1 Опубликовано 08 Июнь 2010 - 19:33
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!
Аве Диктаторе! Ртуте буде наше!
#2 Опубликовано 09 Июнь 2010 - 5:05
1. В N кладешь количество элементов массива.Доброго времени суток. Возникла необходимость отсортировать заранеее известный список случайным образом(список используется как какрточная колода). Можете подсказать, как это лучше сделать?
2. Случайным от 1 до N тыкаешь в элемент.
3. Копируешь его в начало результирующего массива.
4. В исходном массиве на его место копируешь последний элемент массива.
5. N уменьшаешь на единицу.
6. К пункту 2 до тех пор, пока N > 0.
7. Возрадоваться.
Пойдет?
С нами сила Алхазашвили!
#3 Опубликовано 09 Июнь 2010 - 7:10
Не, Володь, тут сложнее, мне не массив, а односвязный список нужно перемешать....
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!
Аве Диктаторе! Ртуте буде наше!
#4 Опубликовано 09 Июнь 2010 - 8:37
А зачем именно список? С ним же не удобно работать в таком разрезе? Какие еще операции надо выполнять над этими данными?Не, Володь, тут сложнее, мне не массив, а односвязный список нужно перемешать....
То есть если именно список, то можно фиксировать его начало, находить случайный от начала (переходами по списку), затем переставлять этот элемент вперед, двигать указатель на начало списка (ставить его на этот новый переставленный элемент), указатель на текущий элемент -- это старый указатель на начало (теперь он показывает на второй элемент списка). Ну и количество так же, уменьшать на единицу на каждом проходе...
Только коряво это. Списки не предназначены для таких операций.
С нами сила Алхазашвили!
#5 Опубликовано 09 Июнь 2010 - 9:56
Я просто списком сделал свойства карт "СЕТА".... кроме списка я не придумал чем это можно сделать
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!
Аве Диктаторе! Ртуте буде наше!
#6 Опубликовано 09 Июнь 2010 - 11:19
Не имеет значения. Ты же карты сортируешь, а не свойства.Я просто списком сделал свойства карт "СЕТА".... кроме списка я не придумал чем это можно сделать
Все, что можно сделать списком, можно сделать и деревом, и вектором и вообще, чем угодно. Вопрос исключительно в удобстве использования.
С нами сила Алхазашвили!
#7 Опубликовано 11 Июнь 2010 - 5:55
я придумал по другому, получается громоздко но уж лучше так. чем никак, добавляем еще одно поле (хотя оно всеравно там будет с именем карты) в этом поле числа от 1 до 81, затем рандомом эти числа ищем и выдаем остальные поля.
Собственно список нужен, чтобы объекту "карта" прописать его свойства
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!
Аве Диктаторе! Ртуте буде наше!
0 пользователей читают эту тему
0 пользователей, 0 гостей, 0 невидимых