FC2ブログ

Perl 学習:インデックスソート

2019-10-09 :  PCクリニック
ソート処理に関して、当ブログ内を検索すると、・・・

Python では、
5年前(2014-04-07)の記事:「Python 学習:インデックスソート
そして、昨年(2018-01-19)の記事:「Anaconda 学習:インデックスソート
がある。


Lua 系では、一昨年(2017-08-23)の記事:「GSL 学習:配列要素の並び替え


FreeBASIC では、今年(2019-08-21)の記事:
FreeBASIC 学習:QSort - CRT 改造版


今回、
久し振りに Perl でのコードが必要になった。

調査(検索)してみると、

いつもお世話になっている、Stack Overflow に、
How to return a sorted list's index in Perl?
がある。


Q&Aの質問は、・・・

  Say, I have a list:  @abc = (5,7,6,2,7,1);

  I have to obtain a sorted list index. So the output will be:

   @sorted_list_index = (1,4,2,0,3,5);
   → @sorted_list = (7,7,6,5,2,1);

これは、降順ですね。

<紙>もまさに、降順が欲しかった。


それで、
回答のコードを頂き、<紙>流にアレンジ(?)してみた。

# ===========================================
@Z = (5,7,6,2,7,1); # 元の配列

# Create an array of hashes (with value and index)
$i = 0;
@Z_hash = map { {value=>$_, index=>$i++} } @Z;

# Sort by the value of each hash ===== 降順の場合:
@sorted_Z_hash = sort { $b->{value} <=> $a->{value} } @Z_hash;

# extract the values to array @sorted_list_index
@Z_idx = map { $_->{index} } @sorted_Z_hash;

print "@Z_idx\n"; #<-- prints: 1 4 2 0 3 5 : インデックス

print $i."=".($#Z+1)."\n"; # === $#Z+1 : 要素数=6


# ===========================================
@sorted_Z = map{ @Z[$_] } @Z_idx;
print "@sorted_Z\n"; #<-- prints: 7 7 6 5 2 1 : ソート結果

これで? ・・・・・ OKダ。



本日はここまで。


Perl の学習も続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒

190907
関連記事
スポンサーサイト



コメントの投稿

管理者にだけ表示を許可する

人気blog Ranking



最新記事
カレンダー
06 | 2021/07 | 08
- - - - 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 29 30 31
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

FC2 / i2i / Google




Google Analytics
ブックマーク