
No.2ベストアンサー
- 回答日時:
ポインタ操作で入れ換えするためのリスト構造だと思いますが(^^;
番兵を使わずに、なら、先頭と末尾と現在地を指すポインタを用意して、
繋がっていないところをNULLにしておいて、
先頭からバブルソートしていくのがいいかと思います。
要素数が20個程度なら、バブルソートでも速度的な問題はさほどありません。
クイックソートするには、ランダムアクセスできないリストは不利ですしね。
一応、バブルソートのアルゴリズムを簡単に。
まず、現在地を先頭にする。
現在地と次の要素と比較。
(昇順に並べ替えると仮定して)
次の要素の方が大きければ入れ換え。小さければそのまま。
現在地を次の要素にして、また、次の要素と比較、入れ換え。
現在地の次の要素が末尾ならば、末尾を現在地(末尾のひとつ手前)にして、
先頭に戻る。
入れ換えは、
0->1->2->3、現在地=1として、1と2を入れ換えるならば、
1:現在地(1)の前の要素(0)の次を、現在地の次の要素(2)にする。
2:現在地(1)の次の要素(2)の前を、現在地の前の要素(0)にする。
3:現在地(1)の前を、現在地の次の要素(2)にする。
4:現在地(1)の次の要素(2)の次の要素(3)の前を、現在地(1)にする。
5:現在地(1)の次を、現在地の前の要素(2)の次の要素(3)にする。
6:現在地(1)の前の要素(2)の次を、現在地(1)にする。
7:最後に、入れ換えしなかった場合と同じにするために、現在地を現在地の前の要素にする。
以上で入れ換えできるはず。
机上でしか試してないので、間違っていたらごめんなさい。
具体的なコードは、敢えて書きません。
参考図書は、やっぱり「Cで学ぶデータ構造とアルゴリズム」かな。。。
参考URL:http://www.amazon.co.jp/exec/obidos/ASIN/4274078 …
No.1
- 回答日時:
「メモリが節約できさえすれば速度は問わない」という条件ならば古典的なバブルソートが使えますが・・・
そうではなくて、メモリは節約したいが速度はO(n log n)にしたいという条件でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
質問1.
-
含む含まないという概念自体の...
-
マージソートの計算量について-...
-
改行ほどは行かないけど、若干...
-
親要素・子要素
-
スタイルシートで文字色を指定...
-
CSSで改行後の行間調整
-
htmlの文字が縦書きになる
-
<h1>、<h2>と<p><div>の行間を...
-
htmlのolやulなどlistにtitleや...
-
FC2ショッピングカートのカスタ...
-
マウスオーバー時に画像と一緒...
-
CSSに同じclass名がいっぱい‥。...
-
CSSでクラスのエイリアス(include)
-
画像サイズの変更の仕方を教え...
-
リストの数字のフォントサイズ...
-
機種依存文字、m2(平方メート...
-
divを横に並べる方法
-
dlタグの中にdivは使える?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
含む含まないという概念自体の...
-
既婚男女の方、結婚前と結婚後...
-
HTML の繰返し法???
-
CSSで改行後の行間調整
-
マージソートの計算量について-...
-
aの中にspan
-
テンソル解析(絶対微分学)は...
-
改行ほどは行かないけど、若干...
-
input type="hidden"で取得した...
-
html タグの閉じスラッシュ前の...
-
テキストボックスの中にリンク...
-
NからZへの全単射を具体的に構...
-
質問1.
-
tdに対してmin-heightの定義、...
-
【ヒトの神秘】美男美女から何...
-
smallにtext-allignが効かない
-
角丸画像の背景色を透明にした...
-
emとstrongの反対
-
CSSのa:hoverが急に一部だけ効...
-
textareaの幅を画面と合わせたい
おすすめ情報