好きな和訳タイトルを教えてください

学校でC言語でのソートをやっていてやりたい事が出来たのですがそれの簡単な方法がわかりません。
内容は「ソート方法をExcelの規定の並べ替え順序」にすることです。
わたしはif文を使ったり、並べ替え順序を配列にいれたりなどしかおもいつきません。
ほかになにかあるのでしょうか?(関数など)

参考:http://office.microsoft.com/assistance/hfws.aspx …

A 回答 (4件)

ソートアルゴリズムは何を使っていますか。

Excelのソートは安定(キーが同じ項目の順序は保存される)だったと思うので、qsort(これは不安定)を使うと上手くいかないでしょう。
Cライブラリでは安定なソートアルゴリズムは用意してないと思うので、安定的なソートを自作してください。
挿入ソート(遅いが簡単)かマージソート(速いがメモリ食い)を使うのが良いでしょう。

この回答への補足

もうすこし詳しく書きます。
自作の両方向リストのデータを昇順に並べ替えたり、
新しくいれるデータを適切な位置に挿入などしたいんです。
そのために比較関数などがないでしょうか?
ソート方法は挿入ソートを「前回挿入した位置」から検索するようにしたものといったかんじです。
理由はすでに昇順に並んでるデータを手入力する可能性があるかもしれないと思ったためです。

補足日時:2005/11/12 15:18
    • good
    • 0

質問の意図がよくわからないのですが、


ソート法は、選択ソートとかを習っていてそれを使うんですかね?とすると、
ソートする関数で
A[i] < A[j]
とかなっている所を、自分で書いた
smaller(x, y)
みたいなもので置き換えるとよいのでは。これは、はじめは、< と同じ機能を持つものを作ってテストして、それから改良していくといいでしょう。
配列要素は共用体ですか?
データが、数なら < で判定して、文字列なら、文字列の比較をするんでしょう。

この回答への補足

すみません。説明が下手過ぎました。
私が聞きたかったことはソートをするために、「strcmp」と似た関数で「Excel」と同じソート方法になるように大小判定ができるものがないかということです。
ちなみにsmaller(x, y)みたいなものをstrcmpに文字列が数字の場合の処理を付け足したものなら作っています。
しかしそれではExcelにあるようなソート方法にはならなかった(当然ですが)ので既にある関数でできないものかと思い書き込みました。
もしあったなら教えてくれたら助かります。
なかったなら諦めて自作しようと思います。

補足日時:2005/11/12 01:54
    • good
    • 0

qsort() で並べ替えができます。


参考 URL にサンプルがありますのでよく読んでみてください。

参考URL:http://www.microsoft.com/japan/developer/library …
    • good
    • 0

qsort関数を使うとソートできますが、


その時の比較関数を望むように書いてやることでできるかもしれません。
ただ、Cの場合数値と文字がごっちゃになった配列というのはかなりハードルが高くなるような気がします。
文字列のポインタの配列にしておいて、数値として比較とかのオプションをつけるとか・
    • good
    • 0

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


おすすめ情報