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