ここで、min=0,max=14に置き換わります。)のループに入ります。)では、min=0,max=7なので、またmin=0,max=3とmin=4,max=7の2つに分けられます。)では、min=8,max=14なので、min=8,max=11とmin=12,max=14の2つに分けられます。ここで、配列は次の4つの組に分けられています。ここのreturn文は戻り値を返すためではなく、この処理を終わらせる意味を持っています。このreturn文がないと、このメソッドの繰り返しループが永遠に繰り返されてしまい、最終的にはメモリを食い尽くしてしまう恐れがあります。)のそれぞれの場所まで戻ります。同じメソッドを繰り返して使うときは、最後の処理の時にreturn文をつけなければうまく動かなくなりますので気をつけてください。)のループにはいります。2組は次のような順序になっている。82,12,2これまでの流れを解りやすくしてみましたので参考にしてください。82これは、一番最初の状態です。次にこれを半分にしてまたsortメソッドに入ると次のようになります。82この二つがそれぞれまたsortメソッドに入って半分にされると次のように4分割されます。82これがまたそれぞれsortメソッドに入るのですが、ここで今まで当てはまらなかった次の条件の処理に移ります。return;}これにより、4つのブロックのそれぞれが並び替えされ次のようになります。2この並び替えが終わったらreturn文によりこのメソッドループが終わります。このメソッドのループを再帰的ループといいます。このreturn文によりどこまで処理が戻るかというと、処理Bのところまで戻ります。戻ったら次のようになっています。2この2つのブロックがそれぞれ次のfor文の処理に移ります。・このfor文の処理を説明するのに、size=8,min=0,max=7の配列{75,32,24,10,98,88,72,43}の方の処理を見ながら説明します。couter1とは[0]〜[3]の配列{75,32,24,10}を示します。couter2は[4]〜[7]の配列{98,88,72,43}を示します。このif文の意味は、簡単に言うと両方のブロックの先頭同士をまず比べ(今回は75と98)、大きいほうをtmp[0]に代入します。代入したほうのブロックのcounterをひとつインクリメントします。次は75と88を比べてといった処理をfor文で繰り返しているだけです。この処理は、実際に数字を当てはめて見ていけば解りやすいです。このループが全部終わると今度は処理Aに再び戻ります。戻ったときには次のようになっています。2この2つのブロックがまた次のループに入ります。・この処理が終わると、すべてが並び替えられていてmainメソッドに戻り結果が出力されます。メモ帳を開いて次のプログラムを作ってみましょう。まとめはてなブログをはじめよう!MrRadiologyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。