• ベストアンサー

[プログラム]バブルソートのフローチャート

バブルソートのフローチャートについてなんですが、写真真ん中の  i〈 last-1 とはどういう意味なのでしょうか。 プログラミング初心者です。 宜しくお願いします。

  • rciLA
  • お礼率80% (4/5)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

良く見えないけど、 変数iと、変数lastから1引いたものを比較して、iの方が小さかったらYes、そうでなければNoの方に分岐では。

rciLA
質問者

お礼

なんとなくではありますが、理解できました。 これからしっかりわかるまで勉強してみようと思います。 解答してくださり、ありがとうございました!

関連するQ&A

  • Cでのバブルソートがよくわかりません

    C言語の課題でバブルソートのプログラミングをしています。入れるデータは10個で、降順に並び変えた最終的な結果だけでなく、毎回for文をまわす度にその時点での結果を表示させなければなりません。 そこで渡されたフローチャートを参考にしてプログラミングしてみたところ、以下のようになりました。しかしなかなか上手く行きません。C言語はまだまだ初心者なので、どなたかお力を貸していただけると助かります。 #include <stdio.h> main(){ int d[10] = {0,7,8,4,5,3,2,1,6,9}; int i,n,j,temp; for(i=1;i<j;i++){ for(j=1;j<=i;n--){ if(d[j]<d[j-1]){ temp=d[j]; d[j]=d[j-1]; d[j-1]=temp; } } for(i=0;i<=10;i++){ printf("%d ", d[i]); } } for(i=0;i<=10;i++){ printf("%d ", d[i]); } }

  • VBでのバブルソートの課題です。

    VBでのバブルソートの課題です。 まったくの初心者でパソコン自体苦手なので何がなんだかわかりません。 型宣言?とセル?の意味もよくわかりません… 課題は↓です…締め切りが今日の夜9時までなんです… どなたか手を貸していただけませんか… 次のように並んでいる数列をバブルソートを用いてソートしなさい。 9 6 7 1 2 途中の過程もシート上に出力すること。

  • バブルソートを入れたいのですが

    こんにちは、Perlを始めたばかりの初心者です。 さっそく質問の方失礼します。 乱数1~100までの数字のうち20個をとりだし配列にいれ、数字を昇順に入れ替えして昇順前と昇順後の数字を表示する問題なのですが。 @a[100]=(1..100); srand(time()); for($i=0 ; $i<20 ; $i++){ $a=int(rand(@a)); print"$a\n"; } と上記の乱数20個を取り出すことができたのですが、 そのあとの昇順させようとしてバブルソートを利用したいのですが、どのように組み込めばいいかわかりません。 どのように組み込めばいいのでしょうか? お答えの方ヨロシクお願いします。

    • ベストアンサー
    • Perl
  • ソートについて

    こんにちは。 C言語の、ソートの意味とは何でしょうか?。 それと、基本3ソートのフローチャートが解らないので解る人がいましたら是非教えてください。

  • フローチャートの使い方

    フローチャートの記号の意味にとらわれず、ビジュアルに訴えるのであれば、フローチャート記号を使ってもいいのでしょうか?プレゼンテーションでフローチャートを書き、説明しようと思っていますが、JISで解釈すると、プログラミングに使用するばかりで、作業の経年経過を説明するには、向いていないようです。そもそも、経年経過をフローチャートで書くことは無理なのでしょうか?

  • バブルソート:ポインタで並び替えについて。

    今C言語の研修中で、バブルソートのプログラムをくんでいます。 それで、以下のように配列で入れ替えではなく、ポインタで入れ替えをしたいのですが、  dt+i = dt+i+1;  dt+i+1 = dt2; で、  invalid lvalue in assignment というエラーが出てしまいます。 書き方がまちがっているんでしょうか? 参考書やHPも探してみたのですが、探し方が悪いのかどうにもわかりません。 研修中なので、調べるのも勉強だとは思うのですが、お手上げで・・・・・・ 情けないですが、教えていただけると嬉しいです。 /** ソート処理 **/ static int SORT_PROC(void) {   int i,m;   syouhin_typ *dt2;   /** バブルソートでソート処理 **/   for(m=0; m<i_cnt-1; m++){     for(i=0; i<i_cnt-1;i++){       if(strncmp((dt+i)->code,(dt+i+1)->code,sizeof(dt->code)) >= 0){          dt2 = dt+i;          dt+i = dt+i+1;          dt+i+1 = dt2;       }     }   } } ちなみにdtはグローバル変数で、 typedef struct{   char code[5]; /** 商品コード **/   char uriage[5]; /** 売上数 **/ }syouhin_typ; /** グローバル変数 **/ syouhin_typ *dt; /** 商品 **/ としてあります。

  • バブルソート

    int a[] = {8,45,15,90,62,73,22}をバブルソートを使用して、降順で並べ替える。 以下の説明では、配列の要素数(ここでは7)をNとしている。 (1) a[N-1] と a[N-2] を比較し、a[N-1] が a[N-2] より大きい場合は、a[N-1] と a[N-2] を入れ替える。   同様に a[ j] が a[ j-1] より大きければ、a[ j] と a[ j-1] を入れ替える。   この操作を、j=N-1からiまで繰り返す。ただし、iは(1)の処理回数を表す値である。(初回を0とする) (2) (1)を i=0 から N-2 まで繰り返す。 (3) 以下の<実行例>を参考に、配列aのようその各値を標準出力する。 <実行例> 90 73 62 45 22 15 8 という問題なのですが、どうやってもうまく並び替えられません。 a[N-1] の処理はいらないのではないのですか? どのようにプログラムを書いたらいいのか教えて下さい。 あつかましいですが、できたら解説付きでお願いします。

    • ベストアンサー
    • Java
  • バブルソートの組み込み方について

    情報の授業で10人分の点数を打ち込み、その平均点と標準偏差を出し、点数の高い順に並べるプログラムをC言語で作れという課題が出されました。 以下のソースのように平均点と標準偏差を出すところまではいったんですが、バブルソートをどう組み込めばいいのかわかりません。 どなたか教えてくれませんか? #include <stdio.h> #include <math.h> main() { float data[ 10 ], sum = 0, ave, s; int i, n = 10; for( i = 0; i < n; i++ ) { printf( "%d人目の点数 = ", i+1); scanf( "%f", &data[ i ] ); sum += data[ i ]; } ave = sum / n; for( i = 0; i < n; i++ ) { s += ( data[ i ] - ave ) * ( data[ i ] - ave ); } s = sqrt( s / ( n - 1 ) ); printf( "平均値・・ %f\n", ave ); printf( "標準偏差・・ %f\n", s ); return 0; }

  • 配列をソートさせたとき、もう一方の配列も同じようにソートさせたい

    タイトルが意味不明で申し訳ありません。 二つの配列があるとします。 片方には文字列、もう片方には数値が記録されているもので、最大添え字は同じです。 この数値の大きい順に並べ替えを行いたいのですが、 name[0]とcount[0] name[1]とcount[1] ・ ・ をペアで並べ替えたいのですが、その方法が分かりません。 sort関数を使うとどうしても片方のみしかソートできないし、バブルソートを用いて試みましたが、どうも並び替えられません。 連想配列を使う考えもありましたが、2つの配列をどうやって一つのハッシュに格納すればいいか分からず断念しました。 バブルソートの方にバグがあるのかもしれませんが、何か方法があればご教授いただけると幸いです。 よろしくお願いします。 バブルソート部分のソース(配列は@filelistと@countを使用) # ソート処理 for($i=0;$i<$#filelist;$i++){ for($j=0;$i<$j;$j++){ if($count[$i]<$count[$i+1]){ $tmp=$count[$i]; $count[$i]=$count[$i+1]; $count[$i+1]=$tmp; $tmp=$filelist[$i]; $filelist[$i]=$filelist[$i+1]; $filelist[$i+1]=$tmp; $k=$j; } $i=$k; } }

    • ベストアンサー
    • Perl
  • Ruby バブルソート

    バブルソートのプログラムでわからないところがあるため、 質問させていただきます。 Rubyは1.9.3を使用しています。 <プログラム> --------------------------------------------------- def bsort(data)   while true     # swapped変数は数値の入れ替えを記憶     swapped = false     for i in 0..data.size-2       if data[i] > data[i+1]         temp = data[i]         data[i] = data[i+1]         data[i+1] = temp         swapped = true       end     end     return if !swapped   end end data = [10, 9, 8, 7, 6] bsort(data) puts "ソート結果#{data}" --------------------------------------------------- return if !swapped のところで、 なぜwhileのループから抜けられるのかがよくわかりません。 return if swapped == false と書き換えて実行しても同じ結果が得られたのですが、 数値の入れ替えがなければ swapped = false であるため、 !swappedはtrueとはならないのでしょうか。