ソートに挑戦しよう その2

今回は、バブルソートと呼ばれるものに挑戦してみましょう。フォームにボタンを一つ、Memoを2つ貼り付けてみて下さい。そして、Memoの(2とも)Lineプロパティで、Memo1(2)と書かれているものを消してください。(分からない人は「文字を見つけよう」を参考にしてください。) 次に、また、Memoの(2つとも)ScrollBarsプロパティをssVerticalにしてください。出来ましたら、貼り付けたボタンをダブルクリックして以下のコードを書いてください。

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j, temp: Integer;
  Arr: array[0..10] of Integer;
begin
  for i := 0 to 10 do
  begin
    Arr[i] := Random(1000);
    Memo1.Lines.Add(IntToStr(Arr[i]));
  end;


  for i := 0 to 10-1 do
  begin
    j := 10;
    while (j > i) do
    begin
      if (Arr[j] < Arr[j-1]) then
      begin
        temp := Arr[j];
        Arr[j] := Arr[j-1];
        Arr[j-1] := temp;
      end;
      Dec(j);
    end;
  end;


  for i := 0 to 10 do
  begin
    Memo2.Lines.Add(IntToStr(Arr[i]));
  end;
end;

バブルソートは隣接する2つの数値を比較して、条件を満たせば交換をするというやり方をとっています。今回は、どのように値が交換されるかをDelphiの機能についているステップ実行というのでやってみましょう。上のコードを書きましたら、Ctrl+F9キーを押してください。これで、コンパイルが完了しました。すると、エディタのコードの左のほうに小さくて青い点が出てきませんでしたか。そこには、ブレークポイントといって、プログラムを実行した時に強制的にその位置で停止させることが出来る場所を示しています。それでは、以下の図のようにしてください。

するとラインが引かれます。 これで、ブレークポイントの設置が出来ました。

そして、「実行」→「監視式の追加」を選択してください。( Ctrl + F5 でも出来ます)出てきた、監視式のプロパティの監視する式の所に、まず i と書いて「 OK 」を押してください。すると、監視式一覧が出てきます。さらにまた、「実行」→「監視式の追加」を選択して(Ctrl+F5の方が便利です)今度は j と記入して「OK」を押して下さい。これを繰り返して、さらにArr[j], Arr[j-1], Arr[0], Arr[1], Arr[2], Arr[3]....Arr[10]を追加して下さい。出来ましたら、F9キーを押してプログラムを実行させて下さい。最初にフォームが画面の一番前に出てくると思います。そこで、フォームに貼り付けてあるボタンを押してください、すると、エディタの画面に切り替わります。そこから、F8キーを押していってください、一行ずつプログラムが実行されていきます。監視式一覧で、値の移動の仕方も見れるので大変便利です。

値の移動の仕方が分かったと思います。


up next
Last update: 2002/3/3