GSL 学習:配列要素の並び替え

2017-08-23 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
“GSL - GNU Scientific Library”のドキュメント:
GSL Reference Manual - HTML」には、Sorting の章がある。
しかし、
  Sorting objects
には、以下様な記述がある。

  The following function provides a simple alternative
  to the standard library function qsort().
  It is intended for systems lacking qsort(), not as a replacement for it.
  The function qsort() should be used whenever possible,
  as it will be faster and can provide stable ordering of equal elements.
  Documentation for qsort() is available in
   the GNU C Library Reference Manual.
===(Google翻訳)
  次の関数は、標準ライブラリ関数qsort()に代わる簡単な方法を提供します。
  これは、qsort()が不足しているシステムを対象としたものであり、
  qsort()の代わりとはなりません。
  可能な限りqsort()関数を使用する必要があります。
  これは、より速く、同等の要素の安定した順序付けを提供できるからです。
  qsort()のドキュメントは、
   GNU Cライブラリリファレンスマニュアルにあります。

そういえば、
昨年5月(2016-05-16)の記事「Lua で、クイックソート“qsort”」で、

  ・・・・・
  ・・・・・
  そうならば、と、真似をしてコード化してみた。
  ・・・・・
  でも、実行したところ、
  比較判定関数(コールバック関数?) の終盤でアボート???

  原因究明に至らなかったので、
  その昔、2008年初め?、それ以前(?)から使っていた「ActiveBASIC
  でコード化したモノ。
  それは、
  「ab.com コミュニティ ・ トピック - ソートロジック大会
  にあるものを頂いていた。
  これを、Lua に移植した:
  ・・・・・
  ・・・・・
  「GSL - GNU Scientific Library
  にも、
  「void gsl_sort_vector(gsl_vector* v)」や、
  void gsl_sort_index(size_t* p, const double* data, size_t stride, size_t n)
  があるが、
  これは、実数型データの昇順ソートですネ。
  ・・・・・
  ・・・・・

と書いていた。


'gsl_a.lua' サブプログラムを作ったことだし、
今回、使ってみることにした。

 ・gsl_heapsort
 ・gsl_heapsort_index
 ・gsl_sort
 ・gsl_sort_index

等々、幾つか関数があるが、何れも昇順のみ?


クイックソートで、
2種類:
gsl_sort
  double 型データ、in-place ソート
と、
gsl_sort_long_index
  int32 型データ、index ソート
を試した:
----- gsl_Sorting.gsl -----
require'gsl_a'

----- in-place ソート
V = matrix.vec { 5, 4, 3, 2, 1 }
gsl.gsl_sort( V.data, 1, #V ) -- ソート実行(破壊更新)
print( V[1], V[2], V[3], V[4], V[5] ) -- 結果確認


----- index ソート
V = ffi.new( 'int32_t[5]', 5, 4, 3, 2, 1 )
P = ffi.new( 'int32_t[5]' )
gsl.gsl_sort_long_index( P, V, 1, 5 ) -- index ソート実行
-- 結果確認
print( P[0], P[1], P[2], P[3], P[4] )
print( V[P[0]], V[P[1]], V[P[2]], V[P[3]], V[P[4]] )
これで?

出来ました。


本日はここまで。


Lua ( GSL Shell ) / GSL 学習は続く。


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


170717+
関連記事
スポンサーサイト

コメントの投稿

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

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
10 | 2017/11 | 12
- - - 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 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

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

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク