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

📄 unit5_sort.cpp

📁 数据结构作业。 排序和数据检索比较演示程序。 图形界面。
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>

#pragma hdrstop

#include "Unit5_sort.h"
#include "All_Sort.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#define MaxDemo 100
#define MaxAuto 40000

   FILE *out=fopen("out.txt","w");

int data[MaxAuto],bak[MaxAuto],IfDataOK=0;

AnsiString SearchText;

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  AnsiString s=TitleW->Caption+AnsiString(MaxAuto);
  TitleW->Caption=s;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Output()
{
  int i;
  AnsiString  s="";

  for (i=0;i<MaxDemo;i++)
    s += AnsiString(data[i]) + ", ";

  CreSequence->Caption = s;

  s=AnsiString(time);
  TimeLable->Caption = s;

  fprintf(out,"  %s\n",s);

}
void __fastcall TForm1::SearchOutput(int index)
{

  AnsiString s;

  if (index>=0)
  {
    s=AnsiString(index);

    CreSequence->Caption = s;
  }
  else
    CreSequence->Caption = "找不到!";

  s=AnsiString(time);
  TimeLable->Caption = s;

}

void __fastcall TForm1::StraightInsertClick(TObject *Sender)
{
  Label6->Caption=StraightInsert->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      StraightInsertSort(data,MaxAuto);    time=(double)clock()-__start__;

    fprintf(out,"  %s",Label6->Caption);    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BinaryInsertClick(TObject *Sender)
{
  Label6->Caption=BinaryInsert->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      BinaryInsertSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ShellClick(TObject *Sender)
{
  Label6->Caption=Shell->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      ShellSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------

void __fastcall TForm1::BubbleClick(TObject *Sender)
{
  Label6->Caption=Bubble->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      BubbleSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::QuickClick(TObject *Sender)
{
  Label6->Caption=Quick->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      QuickSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Quick2Click(TObject *Sender)
{
  Label6->Caption=Quick2->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      Quick2Sort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::StraightElectClick(TObject *Sender)
{
  Label6->Caption=StraightElect->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      StraightElectSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::HeapClick(TObject *Sender)
{
  Label6->Caption=Heap->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      HeapSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------
void __fastcall TForm1::MergeClick(TObject *Sender)
{
  Label6->Caption=Merge->Caption;
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      MergeSort(data,MaxAuto);    time=(double)clock()-__start__;
    fprintf(out,"  %s",Label6->Caption);
    Output();
    IfDataOK=-IfDataOK;
  }
  else
    notice->Caption="请先生成序列!";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button11Click(TObject *Sender)
{
  IfDataOK=1;
    notice->Caption="OK";
    CreSequence->Caption="";

    fprintf(out,"  %s",Button11->Caption);

  int i;
  AnsiString  s="";
  bak[0]=data[0]=0;

  for (i=1;i<MaxAuto;i++)
  {
    data[i]=data[i-1]+random(8);
    bak[i]=data[i];
  }

  for (i=0;i<MaxDemo;i++)
    s += AnsiString(data[i]) + ", ";

  OriSequence->Caption = s;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button10Click(TObject *Sender)
{

  IfDataOK=2;
    notice->Caption="OK";
    CreSequence->Caption="";

    fprintf(out,"  %s\n",Button10->Caption);

  int i;
  AnsiString  s="";

  for (i=0;i<MaxAuto;i++)
  {
    data[i]=random(MaxAuto);
    bak[i]=data[i];
  }
  for (i=0;i<MaxDemo;i++)
    s += AnsiString(data[i]) + ", ";

  OriSequence->Caption = s;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button12Click(TObject *Sender)
{
  IfDataOK=3;
    notice->Caption="OK";
    CreSequence->Caption="";

    fprintf(out,"  %s\n",Button12->Caption);

  int i;
  AnsiString  s="";
  data[MaxAuto]=0;

  for (i=MaxAuto-1;i>=0;i--)
  {
    data[i]=data[i+1]+random(8);
    bak[i]=data[i];
  }
  for (i=0;i<MaxDemo;i++)
    s += AnsiString(data[i]) + ", ";

  OriSequence->Caption = s;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RevertClick(TObject *Sender)
{
  IfDataOK=-IfDataOK;
    notice->Caption="OK";
    CreSequence->Caption="";

  int i;
  AnsiString s;
  for (i=0;i<MaxAuto;i++)
    data[i]=bak[i];

  for (i=0;i<MaxDemo;i++)
    s += AnsiString(data[i]) + ", ";

  OriSequence->Caption = s;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::EditSearchChange(TObject *Sender)
{
  SearchText=EditSearch->Text;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::StraightSearchClick(TObject *Sender)
{
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      int i=StrtSearch(SearchText,data,MaxAuto);    time=(double)clock()-__start__;    SearchOutput(i);
  }
  else
    notice->Caption="请先生成序列!";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::BinarySearchClick(TObject *Sender)
{
  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      int i=BinaSearch(SearchText,data,MaxAuto);    time=(double)clock()-__start__;    SearchOutput(i);

  }
  else
    notice->Caption="请先生成序列!";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::PartionSearchClick(TObject *Sender)
{

  if (IfDataOK>0)
  {

    clock_t __start__ = clock();
      int i=PartSearch(SearchText,data,MaxAuto);    time=(double)clock()-__start__;    SearchOutput(i);

  }
  else
    notice->Caption="请先生成序列!";

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -