Jump to content

  • Log in with Facebook      Sign In   
  • Create Account

Photo

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


  • Please log in to reply
6 replies to this topic

#1 phoenix54 Posted 08 June 2010 - 19:33 PM

phoenix54

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

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

#2 Syrano Posted 09 June 2010 - 5:05 AM

Syrano
  • Свои
  • 9630 posts
  • Владимир Зайцев

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

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

Пойдет?

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


#3 phoenix54 Posted 09 June 2010 - 7:10 AM

phoenix54

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

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

#4 Syrano Posted 09 June 2010 - 8:37 AM

Syrano
  • Свои
  • 9630 posts
  • Владимир Зайцев

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

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

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

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


#5 phoenix54 Posted 09 June 2010 - 9:56 AM

phoenix54

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

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

#6 Syrano Posted 09 June 2010 - 11:19 AM

Syrano
  • Свои
  • 9630 posts
  • Владимир Зайцев

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

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

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

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


#7 phoenix54 Posted 11 June 2010 - 5:55 AM

phoenix54

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

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




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users