* 사용환경 : 델파이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.