一个二分法查找的图形演示程序

2016-02-19 15:56 113 1 收藏

下面是个一个二分法查找的图形演示程序教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - 编程语言 】

不知道这样的演示效果怎么样,因为屏幕大小的问题没办法输出太多的数字,假如还有什么好的想法希望大家提出.#include graphics.h
  void fun(int x[],int y,int z);/*具体排序过程*/
  void Init();/*图形初试化*/
  void Close();/*图形关闭*/
  void Put(int x[],int y);/*输出15个数字*/
  void Up(int x);/*画上箭*/
  void Down(int x);/*画下箭*/
  void Mid(int x);/*画中间箭*/
  void Clr(int x);/*擦除画面上的一些内容*/
  void main(void)
  {
   int a[15]={1,2,3,4,5,6,7,8,9,10,13,15,18,20,25};
   Init();
   Put(a,15);
   fun(a,5,15);
   Close();
  }
  void Mid(int n)/*画中间键*/
  {
   setcolor(WH99vE);/*中间箭的颜色为白色,以下三条线画成了箭头,以下两个函数一样*/
   line(25+n*40,120,25+n*40,80);
   line(25+n*40,120,20+n*40,110);
   line(25+n*40,120,30+n*40,110);
  }
  void Down(int n)/*画上箭*/
  {
   setcolor(6);
   line(25+n*40,120,25+n*40,80);
   line(25+n*40,120,20+n*40,110);
   line(25+n*40,120,30+n*40,110);
  }
  void Up(int n)/*画下箭*/
  {
   setcolor(6);
   line(25+n*40,180,25+n*40,220);
   line(25+n*40,180,20+n*40,190);
   line(25+n*40,180,30+n*40,190);
  }
  void Clr(int y)/*擦除画面上的一些内容*/
  {
    setfillstyle(SOLID_FILL,0);/*每次演示的时候先将下面显示的文字给去处掉*/
    bar(0,y+50,640,y-50);/*这里是用矩形的方式*/
  }
  void Put(int a[],int n)/*一开始的输出函数*/
  {
   int i;
   char num[5];
   setcolor(GREEN);
   settextstyle(0,0,2);/*设置字体的大小*/
   for(i=0;in;i++)
   {
    sprintf(num,"%d",a[i]);/*讲数字转换成字符串输出*/
    outtextxy(20+i*40,150,num);
   }
   settextstyle(0,0,1);
   setcolor(BLUE);
   outtextxy(250,250,"anykey to continue");
   getch();
  }
  void fun(int a[],int y,int n)/*具体的查找*/
  {
   int low,high,mid,i;
   char str1[5],str2[5];
   sprintf(str1,"%d",y);
   low=0;
   high=n-1;
   setcolor(RED);
   settextstyle(0,0,2);
   outtextxy(200,10,"FIND");
   outtextxy(330,10,str1);
   while(low=high)
   {
    Clr(250);
    Clr(80);
    Clr(230);/*这里三个Clr是为了把屏幕上的箭头和文字删了*/
    mid=(high+low)/2;
    Up(high);
    Down(low);
    Mid(mid);/*画好了三个箭头后开始查找*/
    if(a[mid]==y)
    {
     outtextxy(300,250,"FIND");
     break;
    }
    if(a[mid]y)
    {
     low=mid;
     sprintf(str2,"%d",a[mid]);
     outtextxy(250,250,str2);
     outtextxy(300,250,"");
     outtextxy(350,250,str1);
    }
   if(a[mid]y)
   {
    high=mid;
    sprintf(str2,"%d",a[mid]);
    outtextxy(250,250,str2);
    outtextxy(300,250,"");
    outtextxy(350,250,str1);
   }
   sleep(1);/*间隔一秒好执行下一次*/
   }
  }void Init()/*图形驱动*/
  {
   int gd=DETECT,gm;
   initgraph(&gd,&gm,"c:c");/*tc所在目录的路径*/
   cleardevice();
  }
  void Close()/*图形驱动结束*/
  {
   getch();
   closegraph();
  }
  

来源:http://www.tulaoshi.com/n/20160219/1610726.html

延伸阅读
#include graphics.h #include stdio.h #include math.h #include time.h #define PI 3.14159 #define maxx 640 #define maxy 480main() {int i;  char c;  init();  draw();  c=getch(); } init() /*初始化图形系统函数*/ {int gdriver=DETECT,gmode; &n...
很多写Windows Device Driver的开发人员基本上都是使用Windows DDK进行开发的。但是,现在也有不少人都开始借助一些辅助工具。笔者去年开始接触到riverStudio,发现它真的是一个不错的开发工具,不仅写代码的时候思路清晰,而且和DDK的结合很好。 当然,也有很多人觉得用DriverStudio不够正宗,或者说不能很好的理解Windows Device Dr...
标签: PHP
  需要MYSQL,GD的支持,LINUX下PHP4RC1通过,这也是我做的系统中正在用的。 <?php /*** hit_count表只一个字段hit_count page_visit_record表是用来控制一个IP一天内只产生一个计数器跳动 CREATE TABLE page_visit_record (    visit_time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,    remote...
标签: ASP
  DateSelect.asp 创立一个日历格式的。。。 <%@ LANGUAGE="VBSCRIPT" % <% 'Code Written by D. Scott Hand 'If any errors are found, please 'e-mail scott_hand@pobox.com with 'the error and the way the error 'was caused '***Purpose:************ '* This is a page built to show calendar functiona...
新建工程,点工程->部件,在列表中找到并勾选Microsoft PictureClip Control 6.0将其添加到工具箱。 在窗体中添加一个PictureClip控件,设置它的Picture属性装载一副图像,设置PictureClip控件的Col属性为3(3列),Row属性为3(3行)。 然后添加一个CommandButton控件Command1,设置其Style为1(图形按钮),再复制8个Command1,提示是否创建控件数组...

经验教程

194

收藏

61
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部