📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Q_and_M.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
rNum=0;
rA=NULL;
dNum=0;
dA=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(rA!=NULL) delete rA;
if(dA!=NULL) delete dA;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
rNum=StrToInt(InputBox("元素个数:N=n*5000","请输入n(1<=n<=20)","0"));
if(rNum<1)
{
ShowMessage("元素个数要为正数!");
return;
}//end if
if( rNum>20 )
{
ShowMessage("输入不在操作范围!");
return;
}//end if
if(rA!=NULL) delete rA;
rA=new int [rNum*5000+1];
for(int i=1; i<=rNum*5000; i++)
rA[i]=random(100000);
Memo1->Lines->Add("--------------");
Memo1->Lines->Add("当n等于"+IntToStr(rNum)+"时:");
Button2->Enabled=true;
Button3->Enabled=true;
Button7->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int *Am;
Am=new int [rNum*5000+1];
for(int i=1; i<=rNum*5000; i++)
Am[i]=rA[i];
DWORD time1=timeGetTime();
MergeSort(Am, rNum*5000);
DWORD time=timeGetTime()-time1;
Memo1->Lines->Add("");
Memo1->Lines->Add("归并排序耗时:"+IntToStr(time)+"毫秒");
if(Button7->Caption=="停止数据显示")
for(int i=1; i<=rNum*5000; i++)
Memo1->Lines->Add(IntToStr(Am[i]));
delete Am;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int *Aq;
Aq=new int [rNum*5000+1];
for(int i=1; i<=rNum*5000; i++)
Aq[i]=rA[i];
DWORD time1=timeGetTime();
QuickSort(Aq, 1, rNum*5000);
DWORD time=timeGetTime()-time1;
Memo1->Lines->Add("");
Memo1->Lines->Add("快速排序耗时:"+IntToStr(time)+"毫秒");
if(Button7->Caption=="停止数据显示")
for(int i=1; i<=rNum*5000; i++)
Memo1->Lines->Add(IntToStr(Aq[i]));
delete Aq;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
try
{
dNum=StrToInt(InputBox("元素个数","请输入N=","0"));
if(dNum<1)
{
ShowMessage("元素个数要为正数!");
return;
}//end if
if(dA!=NULL) delete dA;
dA=new int [dNum+1];
for(int i=1; i<=dNum; i++)
dA[i]=StrToInt(InputBox("输入"+IntToStr(dNum)
+"个元素","请输入第"+IntToStr(i)+"个:","0"));
Memo2->Lines->Add("------------");
Memo2->Lines->Add("当N等于"+IntToStr(dNum)+"时:");
Memo3->Lines->Add("------------");
Memo3->Lines->Add("当N等于"+IntToStr(dNum)+"时:");
Button5->Enabled=true;
Button6->Enabled=true;
}
catch (Exception &exception)
{
ShowMessage("警告!不按要求操作。");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
int *Am;
Am=new int [dNum+1];
for(int i=1; i<=dNum; i++)
Am[i]=dA[i];
DWORD time1=timeGetTime();
MergeSort(Am, dNum);
DWORD time=timeGetTime()-time1;
Memo2->Lines->Add("");
Memo2->Lines->Add("归并排序耗时:"+IntToStr(time)+"毫秒");
for(int i=1; i<=dNum; i++)
Memo2->Lines->Add(IntToStr(Am[i]));
delete Am;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
int *Aq;
Aq=new int [dNum+1];
for(int i=1; i<=dNum; i++)
Aq[i]=dA[i];
DWORD time1=timeGetTime();
QuickSort(Aq, 1, dNum);
DWORD time=timeGetTime()-time1;
Memo3->Lines->Add("");
Memo3->Lines->Add("快速排序耗时:"+IntToStr(time)+"毫秒");
for(int i=1; i<=dNum; i++)
Memo3->Lines->Add(IntToStr(Aq[i]));
delete Aq;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
if( Button7->Caption=="启动数据显示" )
Button7->Caption = "停止数据显示";
else Button7->Caption = "启动数据显示";
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -