⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.cpp

📁 归并和快速算法比较
💻 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 + -