Автор Тема: рассортировка массива  (Прочитано 3567 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
рассортировка массива
« : 29 Марта 2001, 18:59:39 »
поделитесь кто как реализовывает сабдж.

мне известен только вариант составление нового(рассортированного) массива сбором рэндом из сортированного.
а нельзя как-то проще это сделать?
ну, будем исповедоваться?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
рассортировка массива
« Ответ #1 : 29 Марта 2001, 22:32:04 »
Достаточно случайным образом поменять местами несколько элементов.
2B OR NOT 2B = FF

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
рассортировка массива
« Ответ #2 : 30 Марта 2001, 10:21:41 »
ну в общем в моем случае это и делается - только не "местами", а все элементы массива =)
вопрос то вот наверное как надо было сформулировать. есть ли в перле аналог функции shuffle, которая есть в РНР?
ну, будем исповедоваться?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
рассортировка массива
« Ответ #3 : 30 Марта 2001, 11:31:44 »
Цитировать
AliMamed (30-03-2001 10:21):
вопрос то вот наверное как надо было сформулировать. есть ли в перле аналог функции shuffle, которая есть в РНР?
А что она в PHP делает?
2B OR NOT 2B = FF

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
рассортировка массива
« Ответ #4 : 30 Марта 2001, 11:33:58 »
меняет порядок элементов массива в произвольном порядке
ну, будем исповедоваться?

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
рассортировка массива
« Ответ #5 : 30 Марта 2001, 15:10:26 »
Цитировать
AliMamed (30-03-2001 11:33):
меняет порядок элементов массива в произвольном порядке
такой нет, IMHO.
2B OR NOT 2B = FF

  • Гость
рассортировка массива
« Ответ #6 : 30 Марта 2001, 17:01:29 »
Цитировать
AliMamed (30-03-2001 11:33):
меняет порядок элементов массива в произвольном порядке

perldoc -q shuffle

  • Гость
рассортировка массива
« Ответ #7 : 30 Марта 2001, 17:12:30 »
Точно. :)

     Use this:

         # fisher_yates_shuffle( \\@array ) :
         # generate a random permutation of @array in place
         sub fisher_yates_shuffle {
             my $array = shift;
             my $i;
             for ($i = @$array; --$i; ) {
                 my $j = int rand ($i+1);
                 next if $i == $j;
                 @$array[$i,$j] = @$array[$j,$i];
             }
         }

         fisher_yates_shuffle( \\@array );    # permutes @array in place

     You\'ve probably seen shuffling algorithms that work using
     splice, randomly picking another element to swap the current
     element with:

         srand;
         @new = ();
         @old = 1 .. 10;  # just a demo
         while (@old) {
             push(@new, splice(@old, rand @old, 1));
         }

     This is bad because splice is already O(N), and since you do it
     N times, you just invented a quadratic algorithm; that is,
     O(N**2). This does not scale, although Perl is so efficient that
     you probably won\'t notice this until you have rather largish
     arrays.

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
рассортировка массива
« Ответ #8 : 30 Марта 2001, 17:19:39 »
Цитировать
NAS (30-03-2001 17:12):
Точно. :)
что точно-то?

у меня тута ни шелла ни перлдока нету, но если енто его ответ, то значит не фига такой функции нету, потому что так как в первом примере показано так (ну почти так=)) я и делаю
ну, будем исповедоваться?

  • Гость
рассортировка массива
« Ответ #9 : 30 Марта 2001, 18:01:27 »
А у меня тут тоже шела нет :)
Есть Перл от Activstate, а там встроенный perldoc.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28