- ベストアンサー
並べ替えについて
10人分の身長を記入し それを高い順に並べ替える プログラムを 簡単に書くには どうしたら良いでしょうか? お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
すごい簡単な方法を挙げてみますね。 最初の身長から考え、1番目ならば1番目と2番目について考えます。 高い順ですから、1番目より2番目のほうが大きい場合に入れ替えを行います。次に2番目と3番目について考え、2番目よりも3番目のほうが大きければ入れ替えを行います。このように最後まで行うと、必ず10番目に最小値がきます。 次のループでは9番目まで行うと、1番目から9番目の中で最小値、かつ10番目よりも大きい値が決まります。 このように0番目まで繰り返していくと高い順に並べることができます。 サンプルとして下にプログラムを示しておきます。 アルゴリズムについては上の方法で行いました。 自分の中では最も簡単な方法だと思うので、参考にしていただいたら光栄です。 #include <stdio.h> void main(void) { double height[10]; int i,j; double k; printf("10人分の身長を入力してください\n"); for(i=0;i<10;i++) { printf("%d人目=",i);scanf("%lf",&height[i]); } for(i=8;i>=0;i--) { for(j=0;j<=i;j++) { if(height[j]<height[j+1]) { k=height[j]; height[j]=height[j+1]; height[j+1]=k; } } } printf("----ソート結果----\n"); for(i=0;i<10;i++) { printf("%lf\n",height[i]); } } 一応サンプルですが、自分で考えることも大切ですよ。
その他の回答 (2)
- mendokusa
- ベストアンサー率13% (359/2726)
アルゴリズムの話ですか? 身長を書いた紙切れを並べて、あなただったらどうやって並べるか考えて下さい。
あなたに取っての「簡単」が分かりませんが、 私にとって簡単な方法は、qsort()を使うことです。