The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"как отсортировать масив?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"как отсортировать масив?"
Сообщение от RUSLAN Искать по авторуВ закладки on 10-Фев-03, 03:04  (MSK)
Есть 2 масива состоящих из "название1 номер1 название2 номер2 ... название n номер n " как отсортировать масив чтобы пары "название номер " не теряли своей последовательности ??
Вариант с хешем не предлагать! :)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: как отсортировать масив?"
Сообщение от Dmytro Shteflyuk emailИскать по авторуВ закладки on 10-Фев-03, 17:50  (MSK)
>Есть 2 масива состоящих из "название1 номер1 название2 номер2 ... название n
>номер n " как отсортировать масив чтобы пары "название номер "
>не теряли своей последовательности ??
>Вариант с хешем не предлагать! :)

char a[20][40];

...
qsort(a, 10, 40 * 2, (int (*)(const void *, const void *))strcmp);
...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: как отсортировать масив?"
Сообщение от RUSLAN Искать по авторуВ закладки on 11-Фев-03, 00:20  (MSK)
>char a[20][40];
>
>...
>qsort(a, 10, 40 * 2, (int (*)(const void *, const void *))strcmp);
>
>...

    Дело в том что необходимо отсортировать массивы с помощью perl ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: как отсортировать масив?"
Сообщение от XMan Искать по авторуВ закладки on 11-Фев-03, 01:22  (MSK)
А чем хеш то не устраивает ? Дублирующиеся ключи есть ? Так на каждый ключ вешаешь массив значений вместо скаляра.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: как отсортировать масив?"
Сообщение от konst emailИскать по авторуВ закладки on 12-Фев-03, 20:10  (MSK)
Не понятна тема.
Для сортировки чисел используется такая конструкция:

@array_sorted = sort {$a <=> $b} @array;

from perldoc:
                  # sort numerically ascending
                   @articles = sort {$a <=> $b} @files;

                   # sort numerically descending
                   @articles = sort {$b <=> $a} @files;

============

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: как отсортировать масив?"
Сообщение от RUSLAN Искать по авторуВ закладки on 13-Фев-03, 00:12  (MSK)
>Не понятна тема.
>Для сортировки чисел используется такая конструкция:
>
>@array_sorted = sort {$a <=> $b} @array;
>


Это почти то, но только массив содержит пары значений типа:
nomer1,slovo1,nomer2,slovo2,nomer3,slovo3  и т.д, надо отсортировать по номеру так что-бы последовательность номера и слова не потерялась, так более понятнее ? ;-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: как отсортировать масив?"
Сообщение от XMan Искать по авторуВ закладки on 13-Фев-03, 01:56  (MSK)
Можно пользовать "@ar_sorted=sort { ... } @ar". Осталось только определиться, что же должно быть на месте "..." :)
А простейший вариант с хешем (уж незнаю чем не устраивает):

# заполняем хеш
%hash=();
for ($i=0; $i<@ar; $i+=2) { push(@{$hash{$ar[$i]}},$ar[$i+1]); };

# сортируем и выводим хеш
foreach $key (sort keys %hash) {
  foreach $val (sort @{$hash{$key}}) {
    print "$key $val\n";
  };
};

Сортировка сначала по ключам, а потом и по значениям. Ключи могут повторяться. Соответствующие им значения тоже. То есть из массива:

@ar=('a1','b1','a3','b3','a1','b2');

ничего не потеряется:

a1 b1
a1 b2
a3 b3

Так же как и из массива:

@ar=('a1','b1','a3','b3','a1','b1');

тоже ничего не потеряется:

a1 b1
a1 b1
a3 b3

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: как отсортировать масив?"
Сообщение от RUSLAN Искать по авторуВ закладки on 14-Фев-03, 01:51  (MSK)
>%hash=();
>for ($i=0; $i<@ar; $i+=2) { push(@{$hash{$ar[$i]}},$ar[$i+1]); };
>
># сортируем и выводим хеш
>foreach $key (sort keys %hash) {
>  foreach $val (sort @{$hash{$key}}) {
>    print "$key $val\n";
>  };
>};
>


Спасибо, то что надо. второй вариант отличный.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: как отсортировать масив?"
Сообщение от konst emailИскать по авторуВ закладки on 13-Фев-03, 11:26  (MSK)
массив содержит пары значений типа:
>nomer1,slovo1,nomer2,slovo2,nomer3,slovo3  и т.д, надо отсортировать по номеру так что-бы последовательность номера
>и слова не потерялась, так более понятнее ? ;-)
Не понятно!
Можно точнее,
@a = (1,'slovo1,2,'slovo2') #=> $a[0] == 1;$a[1] == 'slovo1'...
это такой массив или
$a[0] = '1 slovo1';
$a[1] = '2 slovo2';
или
$a[0][0] = 1;
$a[0][1] = 'slovo';
Т.е. что такое "пары значений"?
Пары значений в хеше. А в массиве - "порядковый номер элемента" = значение.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: как отсортировать масив?"
Сообщение от RUSLAN Искать по авторуВ закладки on 13-Фев-03, 22:08  (MSK)
>Не понятно!
>Можно точнее,
> @a = (1,'slovo1,2,'slovo2') #=> $a[0] == 1;$a[1] == 'slovo1'...
>это такой массив или
>$a[0] = '1 slovo1';
>$a[1] = '2 slovo2';
>или
>$a[0][0] = 1;
>$a[0][1] = 'slovo';
>Т.е. что такое "пары значений"?
>Пары значений в хеше. А в массиве - "порядковый номер элемента" =
>значение.


@array=("3","Юра","1","Петя","4","Витя","2","Рома");
Отсоритировать так, что-бы вышло типа:
@array=("4","Витя","3","Юра","2","Рома","1","Петя");


p.s извиняюсь что запутал. ;)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру