![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
私は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で質問しましょう!
似たような質問が見つかりました
- JavaScript jsで、配列内の文章を改行する際どのようにすればいいですか。 3 2022/07/05 20:40
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript javascriptでif文と配列を組み合わせて運賃プログラムを完成させたいです。 1 2022/07/03 14:20
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- 英語 英語の書き換えの質問です。 彼らが結婚して10年になる。を4つに書き換えるとしたら、 They go 2 2023/05/17 21:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
Excel VBAで並べ替えをしたい
-
VB.NETでファイル名順にファイ...
-
あるディレクトリ内のファイル...
-
Excelですべての組合せ(重複組...
-
C# DataGridView のヘッダーセ...
-
datagridviewの並べ替え
-
VBScriptで重複レコードを削除...
-
ファイル名「1.jpg ~10.jpg~...
-
GridViewで列のソートを無効に...
-
excel VBA リストビューの行...
-
ブック.csvを開かずに他のブッ...
-
リスト構造のソートで悩んでま...
-
DataGridViewで選択行が変わる...
-
文字列をソートする方法
-
Excel VBA で別シートにデータ...
-
C言語 挿入法
-
2次元配列を複数項目でソートし...
-
VBA基本構文の作り方 2列の...
-
ソートアルゴリズム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
System.IO.Directory.GetFiles...
-
VB.NETでファイル名順にファイ...
-
C# DataGridView のヘッダーセ...
-
なぜ?counterintuitive
-
ファイル名「1.jpg ~10.jpg~...
-
Excelですべての組合せ(重複組...
-
C# DataTableの行をソートしてD...
-
n番目に大きい数を求めるアル...
-
リスト構造のソートで悩んでま...
-
C言語・要素除去
-
10個の整数を入力して小さい順...
-
VBA基本構文の作り方 2列の...
-
あるディレクトリ内のファイル...
-
excel VBA の条件をつけての列...
-
excel VBA リストビューの行...
-
数字文字列のソート方法
-
Excel VBAで並べ替えをしたい
-
VBScriptで重複レコードを削除...
-
vbでDataTableの抽出コピー
-
構造体配列のソート
おすすめ情報