Перейти к содержимому


Фото

Случайная сортировка списка Turbo pascal


  • Чтобы отвечать, сперва войдите на форум
6 ответов в теме

#1 phoenix54 Опубликовано 08 Июнь 2010 - 19:33

phoenix54

    Самый пафосне

  • Свои
  • 1 249 Сообщений:
  • Алексей Мирошников
Доброго времени суток. Возникла необходимость отсортировать заранеее известный список случайным образом(список используется как какрточная колода). Можете подсказать, как это лучше сделать?
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!

#2 Syrano Опубликовано 09 Июнь 2010 - 5:05

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев

Доброго времени суток. Возникла необходимость отсортировать заранеее известный список случайным образом(список используется как какрточная колода). Можете подсказать, как это лучше сделать?

1. В N кладешь количество элементов массива.
2. Случайным от 1 до N тыкаешь в элемент.
3. Копируешь его в начало результирующего массива.
4. В исходном массиве на его место копируешь последний элемент массива.
5. N уменьшаешь на единицу.
6. К пункту 2 до тех пор, пока N > 0.
7. Возрадоваться.

Пойдет?

С нами сила Алхазашвили!


#3 phoenix54 Опубликовано 09 Июнь 2010 - 7:10

phoenix54

    Самый пафосне

  • Свои
  • 1 249 Сообщений:
  • Алексей Мирошников
Не, Володь, тут сложнее, мне не массив, а односвязный список нужно перемешать....
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!

#4 Syrano Опубликовано 09 Июнь 2010 - 8:37

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев

Не, Володь, тут сложнее, мне не массив, а односвязный список нужно перемешать....

А зачем именно список? С ним же не удобно работать в таком разрезе? Какие еще операции надо выполнять над этими данными?

То есть если именно список, то можно фиксировать его начало, находить случайный от начала (переходами по списку), затем переставлять этот элемент вперед, двигать указатель на начало списка (ставить его на этот новый переставленный элемент), указатель на текущий элемент -- это старый указатель на начало (теперь он показывает на второй элемент списка). Ну и количество так же, уменьшать на единицу на каждом проходе...
Только коряво это. Списки не предназначены для таких операций.

С нами сила Алхазашвили!


#5 phoenix54 Опубликовано 09 Июнь 2010 - 9:56

phoenix54

    Самый пафосне

  • Свои
  • 1 249 Сообщений:
  • Алексей Мирошников
Я просто списком сделал свойства карт "СЕТА".... кроме списка я не придумал чем это можно сделать
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!

#6 Syrano Опубликовано 09 Июнь 2010 - 11:19

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев

Я просто списком сделал свойства карт "СЕТА".... кроме списка я не придумал чем это можно сделать

Не имеет значения. Ты же карты сортируешь, а не свойства.

Все, что можно сделать списком, можно сделать и деревом, и вектором и вообще, чем угодно. Вопрос исключительно в удобстве использования.

С нами сила Алхазашвили!


#7 phoenix54 Опубликовано 11 Июнь 2010 - 5:55

phoenix54

    Самый пафосне

  • Свои
  • 1 249 Сообщений:
  • Алексей Мирошников
я придумал по другому, получается громоздко но уж лучше так. чем никак, добавляем еще одно поле (хотя оно всеравно там будет с именем карты) в этом поле числа от 1 до 81, затем рандомом эти числа ищем и выдаем остальные поля. Собственно список нужен, чтобы объекту "карта" прописать его свойства
Adsumus! Adsumus!
Аве Диктаторе! Ртуте буде наше!




0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 невидимых