次の問題がわかりません。
NUM個のint型の配列を考える。このとき、この配列を小さい順に並び変える関数を作成し、その動作を確認しなさい。小さい順に並び替えるアルゴリズムは、以下のアルゴリズムを実装すること。
↓↓↓
配列の名前をa、配列の要素を6個として説明する。
Step1.1: a[5]とa[4]を比べて、順番が間違っていたら、a[5]とa[4]の値を入れ替える。
Step1.2: a[5]とa[3]を比べて、順番が間違っていたら、a[5]とa[3]の値を入れ替える。
………
Step1.n: a[5]とa[0]を比べて、順番が間違っていたら、a[5]とa[0]の値を入れ替える(必ずa[5]に一番大きい値が入っている)。
Step2.1: a[4]とa[3]を比べて、順番が間違っていたら、a[4]とa[3]の値を入れ替える。
Step2.2: a[4]とa[2]を比べて、順番が間違っていたら、a[4]とa[2]の値を入れ替える。
………
↑↑↑
○環境
・OS:Linux
・コンパイラ名とバージョン:gcc
・言語:C
以上です。よろしくお願いいたします。
配列を小さい順に並び変える関数
-
box
Re:配列を小さい順に並び変える関数
> 配列の名前をa、配列の要素を6個として説明する。
配列の要素数が4個、5個、6個あたりの場合について、
手で入れ替えるとしたらどうするかを紙に書き出します。
そこには、必ず何らかの法則があります。
後は、その法則に従い、要素数をNUM個の場合に一般化してください。
配列の要素数が4個、5個、6個あたりの場合について、
手で入れ替えるとしたらどうするかを紙に書き出します。
そこには、必ず何らかの法則があります。
後は、その法則に従い、要素数をNUM個の場合に一般化してください。
-
ru
Re:配列を小さい順に並び変える関数
#include <stdio.h>
#include <stdlib.h>
#define NUM (6)
int a[NUM], w, i, j;
void init()
{
srand((unsigned int)time(NULL));
for(i=0;i<NUM;i++)
{
a=rand();
}
}
void sort()
{
for(i=NUM-1;i>0;i--)
{
for(j=i-1;j>=0;j--)
{
if(a<a[j])
{
w = a;
a = a[j];
a[j] = w;
}
}
}
}
void disp()
{
for(i=0;i<NUM;i++)
{
printf("a[%d]=%d\n", i, a);
}
printf("\n");
}
int main()
{
init();
disp();
sort();
disp();
return 0;
}-
box
Re:配列を小さい順に並び変える関数
> ソースコード全体の作成をお願いしたいです。
人間、考えることをやめたら退化していくだけです。
ご自分の脳をフル回転させてください。
人から与えられたソースコードを鵜呑みにするのでなく、
アルゴリズムを自分で考えてソースコードに落としていく作業こそが
プログラミングの醍醐味です。それを放棄してはいけません。
人間、考えることをやめたら退化していくだけです。
ご自分の脳をフル回転させてください。
人から与えられたソースコードを鵜呑みにするのでなく、
アルゴリズムを自分で考えてソースコードに落としていく作業こそが
プログラミングの醍醐味です。それを放棄してはいけません。