
私はC言語初心者で、今本などをみながら独学で学んでいます。
配列の値を小さい順に並べたいのですがうまくいきません・・・プログラムは以下のようにしました。
#include <stdio.h>
int main(void){
int ten[5] = {5,1,4,2,3};
int i,j,hako,a = 1,k = 1;
for(i = 0;i <= 3;i++){
if(i == 2){
k++;}
if(i == 3){
k = k + 1;}
for(j = 4;j > a;j--){
if(ten[i] > ten[k]){
hako = ten[i];
ten[i] = ten[k];
ten[k] = hako;}
k++;}
a++;
k = k - 3;
}
for(i = 0;i < 5;i++){
printf("%d\n",ten[i]);}
return 0;}
こうしたらよいなどヒントでもお願いしますm(__)m
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ソートの手法はたくさんあります。
キーワードだけ挙げますが選択ソート、バブルソート、単純挿入ソート、コームソート、シェルソート、
クイックソート、マージソート、ヒープソート、
基数ソート、ビンソート、などなど。
#通称「バカソート(bogosort)」なんてもあったりしますが
#2 さんが説明で挙げているのはバブルソートではありません。
バブルソートは隣り合った要素同士で比較を行いますが、
#2の例はそうなっていません。
適当なソートの手順を言葉で説明すると(#2のでもいいんですけど)、
配列要素が5個だったとして、
・0~4番目で一番小さな要素を見つけて、それと0番目を交換する
・1~4番目で一番小さな要素を見つけて、それと1番目を交換する
・2~4番目で一番小さな要素を見つけて、それと2番目を交換する
・3~4番目で一番小さな要素を見つけて、それと3番目を交換する
というのを、二重ループで組むのが分かりやすいんじゃないかと。
Cによるバブルソートの例を参考URLに挙げておきます。
もろに答えになっているので、参照するときはそのつもりで。
参考URL:http://www1.cts.ne.jp/~clab/hsample/Sort/Sort1.h …
No.2
- 回答日時:
惜しい。
近い所まで来てるんですが。5つの要素のソートの基本は、
1番目と、2~5番目を順に比べ、1番目が大きい場合は入れ換える。
2番目と、3~5番目を順に比べ、2番目が大きい場合は入れ換える。
3番目と、4、5番目を順に比べ、3番目が大きい場合は入れ換える。
4番目と、5番目を比べ、4番目が大きい場合は入れ換える。
です。
比較と入れ換えをするたびに、一番小さい値が配列の前の方に泡のように浮き上がって来るので、この方法のソートを「バブルソート(泡の並び替え)」と呼びます。
for文で書くと
for (i = 0;i < (5-1);i++) { /* 1番目から最後の1つ手前まで */
for (j = i + 1;j < 5;j++) { /* iの次から最後まで */
if (ten[i] > ten[j]) {
hako = ten[i];
ten[i] = ten[j];
ten[j] = hako;
}
}
}
となります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# DataGridView のヘッダーセ...
-
datagridviewの並べ替え
-
Verilog でのソートの仕方
-
1次元配列のソート方法
-
VBScriptで重複レコードを削除...
-
ListViewのソートについて
-
System.IO.Directory.GetFiles...
-
excel VBA リストビューの行...
-
n番目に大きい数を求めるアル...
-
C# DataTableの行をソートしてD...
-
C言語 配列の長さの上限
-
関数から配列を返すには?
-
CStringからchar*への型変換に...
-
DWORDとcharの変換
-
入力された文字列の中の数字を...
-
異なる構造体のデータのコピー
-
【C言語】配列の中に配列を入れ...
-
C言語の配列:「*(w+a)=・・・...
-
%dなどの違い
-
構造体のデータを丸ごとコピー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
C# DataGridView のヘッダーセ...
-
VB.NETでファイル名順にファイ...
-
C# DataTableの行をソートしてD...
-
C言語・要素除去
-
配列の問題
-
VBA基本構文の作り方 2列の...
-
あるディレクトリ内のファイル...
-
Excelですべての組合せ(重複組...
-
n番目に大きい数を求めるアル...
-
2次元配列を複数項目でソートし...
-
ファイル名「1.jpg ~10.jpg~...
-
クイックソートしながら重複要...
-
C# ArrayListを二次元配列のよ...
-
csvファイル内にてソートす...
-
C言語について
-
昇順ソート
-
int num[10]という配列に、適当...
-
EXCEL VBAのソートについて
-
excel VBA の条件をつけての列...
おすすめ情報