Q&A

  • ....왕초보좀 구해줘요....ㅠ.ㅠ
* 사용환경 : 델파이4 / Windows 2k professional





버블과 퀵 머지를 구현하려구 하는데..



버블은 잘되는것 같은데 퀵과 머지를 잘못하겠군요..



잉...쬐끔만 도와주세요....^^



---------소스.....------------------



unit report_1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls;



type

TForm1 = class(TForm)

RadioGroup1: TRadioGroup;

RadioGroup2: TRadioGroup;

Button1: TButton;

Edit_input: TEdit;

BtnAdd: TButton;

BtnDel: TButton;

ListBox1: TListBox;

ListBox2: TListBox;

Label1: TLabel;

Button2: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure BtnAddClick(Sender: TObject);

procedure BtnDelClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.FormCreate(Sender: TObject);

begin

Edit_input.Text:=''; // 에디트 버튼 초기화

ListBox1.Clear; // 에디트 버튼 초기화

ListBox2.Clear; // 에디트 버튼 초기화

RadioGroup1.ItemIndex:=0; // 버블에 초기화

RadioGroup2.ItemIndex:=0; // 오름차순에 초기화



end;



procedure TForm1.Button1Click(Sender: TObject);

var

done: Boolean;

i, j, n: Integer;

text_1, text_2, Dummy: String;

my_data:array [1..1000] of String;



begin

if ListBox1.Items.Count = 0 then

begin

showmessage('DATA를 입력하십시오..');

end

else if ( RadioGroup1.ItemIndex = 0) then

begin

if ( RadioGroup2.ItemIndex = 0) then

begin

// 버블 오름차순

ListBox2.Clear;

ListBox1.ItemIndex := 0;

for i:=0 to ListBox1.Items.Count - 1 do

begin

ListBox2.Items.Add(ListBox1.Items.Strings[i]);

end;



repeat

done := true;

for i := 0 to ListBox1.Items.Count - 2 do

if StrToInt(Listbox2.Items.Strings[i]) > StrToInt(Listbox2.Items.Strings[i + 1]) then

begin

Dummy := Listbox2.Items.Strings[i];

Listbox2.Items.Strings[i] := Listbox2.Items.Strings[i + 1];

Listbox2.Items.Strings[i + 1] := Dummy;

done := false;

end;

until done;

end

else

begin

// 버블 내림차순

ListBox2.Clear;

ListBox1.ItemIndex := 0;

for i:=0 to ListBox1.Items.Count - 1 do

begin

ListBox2.Items.Add(ListBox1.Items.Strings[i]);

end;



repeat

done := true;

for i := 0 to ListBox1.Items.Count - 2 do

if StrToInt(Listbox2.Items.Strings[i]) < StrToInt(Listbox2.Items.Strings[i + 1]) then

begin

Dummy := Listbox2.Items.Strings[i];

Listbox2.Items.Strings[i] := Listbox2.Items.Strings[i + 1];

Listbox2.Items.Strings[i + 1] := Dummy;

done := false;

end;

until done;

end

end

else if ( RadioGroup1.ItemIndex = 1) then

begin

if ( RadioGroup2.ItemIndex = 0) then

begin

// 퀵 오름차순---여기서부터 잘몰겠군요...ㅠ,ㅠ.----

showmessage('퀵 오름차순');

end

else

begin

// 퀵 내림차순

showmessage('퀵 내림차순');

end

end

else

begin

if ( RadioGroup2.ItemIndex = 0) then

begin

// 머지 오름차순

showmessage('머지 오름차순');

end

else

begin

// 머지 내림차순

showmessage('머지 내림차순');

end

end



end;



procedure TForm1.BtnAddClick(Sender: TObject);

begin

// 리스트 박스에 추가

if Edit_input.Text='' then

begin

showmessage('데이타를 입력 하십시오..');

end

else

begin

ListBox1.Items.Add(Edit_input.Text);

Edit_input.Text:='';

end

end;



procedure TForm1.BtnDelClick(Sender: TObject);

begin

// 리스트 박스의 데이타 삭제

ListBox1.Items.Delete(ListBox1.ItemIndex);

end;



procedure TForm1.Button2Click(Sender: TObject);

begin

ListBox2.Clear;

end;



end.

0  COMMENTS