アプリ版:「スタンプのみでお礼する」機能のリリースについて

Fortran77のプログラミングを勉強しています。
多次元配列の並び替えをする時に、各行の組み合わせを変えずにある列に含まれる要素についてソートを行いたいのですが、やり方が分かりません。どなたか方法を教えてくださいますでしょうか。

例えば、
(1,1)A,(1,2)あ,(1,3)3
(2,1)B,(2,2)い,(2,3)1
(3,1)C,(3,2)う,(3,3)2

という3×3の配列を読み込み、3列目を昇順に並べ替えて、

(1,1)B,(1,2)い,(1,3)1
(2,1)C,(2,2)う,(2,3)2
(3,1)A,(3,2)あ,(3,3)3

とした上で、別のファイルに出力したいのです。

初歩的な質問で恐縮ですが、どなたかご教授よろしくお願い致します。

A 回答 (2件)

えっと, 1000行×50列のデータがあって, 「ある列」によってソートしたいとします.


その特定の列では, 当然データを移動させることになりますが, それにひきづられる形で他の列もデータを動かさなければなりません. 従って, 列が 1個の場合と 2個の場合では後者の方がプログラムが (わずかに) 長くなりますが, 10個くらいになると do ループで書くでしょうから長さは変わらなくなります.
あ, Fortran だと「配列全体のコピー」ができるんでしたっけ. だとしたら, 列がいくつあっても長さは変わらないですねぇ, 多分.
    • good
    • 0
この回答へのお礼

ありがとうございました。頑張ってみます。

お礼日時:2007/12/06 10:07

つまり, 「1次元配列ならソートできる」んです... よね?


だったら, 「データを移動する」ときに「必要なデータも一緒に動かす」だけ.

この回答への補足

ご回答ありがとうございます。
浅学ゆえ飲み込みが悪く恐縮ですが、ある列をソートしたい場合、列の数が多くなるほどプログラムの量も多くなるという理解でよろしいのでしょうか?
例えば1000行×50列の表を扱う時は、49の要素をそれぞれ同じように動かしていかねばならないのでしょうか。
それとも、ソートしたい列以外の部分はひとまとめにしてしまってソートするのでしょうか。

お手数煩わせますが、よろしくお願いします。

補足日時:2007/12/02 13:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!