查找算法实验报告
‘壹’ 实验报告怎么写
实验报告常用的内容与格式如下
1、实验名称以及姓名学号
要用最简练的语言反映实验的内容。如验证某程序、定律、算法,可写成“验证什么”、“分析什么”等。
2、实验日期和地点
比如2020年4月25日,物理实验室。
3、实验目的
目的要明确,在理论上验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序的调试方法。一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。
4、实验设备(环境)及要求
在实验中需要用到的实验用物,药品以及对环境的要求。
5、实验原理
在此阐述实验相关的主要原理。
6、实验内容
这是实验报告极其重要的内容。要抓住重点,可以从理论和实践两个方面考虑。这部分要写明依据何种原理、定律算法、或操作方法进行实验。详细理论计算过程。
7、实验步骤
只写主要操作步骤,不要照抄实习指导,要简明扼要。还应该画出实验流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。
(1)查找算法实验报告扩展阅读
实验报告的写作对象是科学实验的客观事实,内容科学,表述真实、质朴,判断恰当。实验报告以客观的科学研究的事实为写作对象,它是对科学实验的过程和结果的真实记录,虽然也要表明对某些问的观点和意见,但这些观点和意见都是在客观事实的基础上提出的。
确证性是指实验报告中记载的实验结果能被任何人所重复和证实,也就是说,任何人按给定的条件去重复这顶实验,无论何时何地,都能观察到相同的科学现象,得到同样的结果。可读性是指为使读者了解复杂的实验过程,实验报告的写作除了以文字叙述和说明以外,还常常借助画图像,列表格、作曲线图等文式,说明实验的基本原理和各步骤之间的关系,解释实验结果等。
‘贰’ 用c语言编写顺序查找和二分查找(折半查找)
顺序查找:在一个已知无序队列中找出与给定关键字相同的数的具体位置。原理是让关键字与队列中的数从第一个开始逐个比较,直到找出与给定关键字相同的数为止。复杂度为o(n).
二分查找又称折半查找,它是一种效率较高的查找方法。
【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。
【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
【算法复杂度】假设其数组长度为n,其算法复杂度为o(log(n))
#include <stdio.h>
//二分查找:
int search(int a[],int x,int n) //x为要查找的元素,n为数组长度
{
int mid=0;
int low=0;
int high=n;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==x)
{ return mid; }
else if(x<a[mid])
{ high=mid-1; }
else
{ low=high+1; }
}
return -1;
}
//顺序查找:
int search1(int a[],int x,int n) //x为要查找的元素,n为数组长度
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==x)
return i;
}
return -1;
}
int main()
{
int i,a[10],x;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("请输入要查找的元素");
scanf("%d",&x);
if(search(a,x,10)!=-1)printf("查找的元素在数组中的位置为%d.\n",search(a,x,10));
else printf("该元素不在数组中\n");
if(search1(a,x,10)!=-1)printf("查找的元素在数组中的位置为%d.\n",search1(a,x,10));
else printf("该元素不在数组中\n");
return 0;
}
‘叁’ c语言程序编程
你好!
程序问题解决了吗?
‘肆’ 课程设计 查找算法综合分析(C语言程序)
老大你在搞笑吧。。一天时间要别人给你一个完整的C程序?你平时都在干什么了?
‘伍’ C语言编写数据结构查找算法
实验五 查找的实现
一、 实验目的
1.通过实验掌握查找的基本概念;
2.掌握顺序查找算法与实现;
3.掌握折半查找算法与实现。
二、 实验要求
1. 认真阅读和掌握本实验的参考程序。
2. 保存程序的运行结果,并结合程序进行分析。
三、 实验内容
1、建立一个线性表,对表中数据元素存放的先后次序没有任何要求。输入待查数据元素的关键字进行查找。为了简化算法,数据元素只含一个整型关键字字段,数据元素的其余数据部分忽略不考虑。建议采用前哨的作用,以提高查找效率。
2、查找表的存储结构为有序表,输入待查数据元素的关键字利用折半查找方法进行查找。此程序中要求对整型量关键字数据的输入按从小到大排序输入。
一、顺序查找
顺序查找代码:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("请输入您要输入的数据的个数:\n");
scanf("%d",&(s->length));
printf("请输入您想输入的%d个数据;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所输入的数据为:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
inti=0;
s->r[s->length].key=k;
while(s->r[i].key!=k)
{
i++;
}
if(i==s->length)
{
printf("该表中没有您要查找的数据!\n");
return-1;
}
else
returni+1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("请输入您想要查找的数据的关键字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的数据的位置为:\n\n%d\n\n",keyplace);
return2;
}
顺序查找的运行结果:
二、折半查找
折半查找代码:
#include"stdio.h"
#include"stdlib.h"
typedef struct node{
intkey;
}keynode;
typedef struct Node{
keynoder[50];
intlength;
}list,*sqlist;
int Createsqlist(sqlist s)
{
inti;
printf("请输入您要输入的数据的个数:\n");
scanf("%d",&(s->length));
printf("请由大到小输入%d个您想输入的个数据;\n\n",s->length);
for(i=0;i<s->length;i++)
scanf("%d",&(s->r[i].key));
printf("\n");
printf("您所输入的数据为:\n\n");
for(i=0;i<s->length;i++)
printf("%-5d",s->r[i].key);
printf("\n\n");
return1;
}
int searchsqlist(sqlist s,int k)
{
intlow,mid,high;
low=0;
high=s->length-1;
while(low<=high)
{
mid=(low+high)/2;
if(s->r[mid].key==k)
returnmid+1;
elseif(s->r[mid].key>k)
high=mid-1;
else
low=mid+1;
}
printf("该表中没有您要查找的数据!\n");
return-1;
}
sqlist Initlist(void)
{
sqlistp;
p=(sqlist)malloc(sizeof(list));
if(p)
returnp;
else
returnNULL;
}
main()
{
intkeyplace,keynum;//
sqlistT;//
T=Initlist();
Createsqlist(T);
printf("请输入您想要查找的数据的关键字:\n\n");
scanf("%d",&keynum);
printf("\n");
keyplace=searchsqlist(T,keynum);
printf("您要查找的数据的位置为:\n\n%d\n\n",keyplace);
return2;
}
折半查找运行结果:
三、实验总结:
该实验使用了两种查找数据的方法(顺序查找和折半查找),这两种方法的不同之处在于查找方式和过程不同,线性表的创建完全相同,程序较短,结果也一目了然。
‘陆’ 算法与数据结构实验顺序表的应用实验报告
者visual c++都行。
看看这个也许你会明白的更多一些。
实验一 多项式相加
一、实验目的
熟悉链表的使用。
掌握如何使用C语言实现链表的说明、创建以及结点的插入和删除等操作。
二、实验要求
熟悉C语言编程。
三、实验内容
对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。
四、实验步骤
1. 用链表作一元多项式的数据结构,用C语言对链表作说明
2. 生成输入一元多项式的函数
3. 输入一元多项式A(x)和B(x)
4. 以一元多项式A(x)为和多项式,将B(x)多项式中系数加入到A(x)中去
实验二 后缀表达式计算
一、实验目的
熟悉栈的使用。
掌握如何使用C语言实现栈的说明、创建以及进栈和出栈等操作。
二、实验要求
熟悉C语言编程。
三、实验内容
先将中缀表达式(就是我们通常所见的)转换为后缀表达式,比如 a+b*c+d 要变成 abc*+d+;转换的方法用栈来实现,涉及到运算符的优先级;然后用另一个栈来对后缀表达式计算结果
四、实验步骤
1.读入字母/数字--〉字母/数字进栈
2.读入运算符--〉退出两个字母/数字,用运算符计算结果,并将结果进栈
3.栈能刚好退完,则最后的即为结果。否则表明表达式有误
实验三 Kmp算法
一、实验目的
熟悉字符串的使用。
掌握如何kmp算法实验字符串的模式匹配。
二、实验要求
熟悉C语言编程。
三、实验内容
求出子串(模式串)的next,利用kmp算法实验模式与主串的匹配算法。
四、实验步骤
1.生成模式串的next函数
2.从第1个字符开始,进行模式串与主串的比较,
3.如果出现失配,将模式串的第next[j]位置开始,继续与主串进行比较。
实验四 Huffman 编码
一、实验目的
熟悉Huffman编码方法。
了解并弄懂Huffman编码实现信息的无损压缩原理。
二、实验要求
熟悉C语言编程。
三、实验内容
1.根据给定的n个权值(w1, w2, …, wn)构成n棵二叉树的集合F=,其中每棵二叉树Ti中只有一个带树为Ti的根结点
2.在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置其根结点的权值为其左右子树权值之和
3.在F中删除这两棵树,同时将新得到的二叉树加入F中
4.重复2, 3,直到F只含一棵树为止
四、实验步骤
1.用C语言实现二叉树的说明
2.输入n个权值,并生成n个二叉树
3.对n个二叉树逐步生成Huffman树
4.对Huffman树的每个叶子结点生成编码
实验五 关键路径
一、实验目的
熟悉关键路径的实现方法。
了解AOE-网以及关键路径在工程实践中的应用。
二、实验要求
熟悉C语言编程。
三、实验内容
根据输入的弧,生成AOE-网。从始点开始,找出到终点的多条路径,求这些路径上的关键活动。由关键活动组成的从始点到终点的路径,即为关键路径。
四、实验步骤
1.输入e条弧,生成AOE-网的存储结构。
2.从始点v0出发,令ve[0]=0,按拓扑有序求ve[j]
3.从终点vn-1出发,令vl[n-1]=ve[n-1],按逆拓扑有序求vl[i]
4.根据各顶点的ve和vl值,求每条弧(活动)ai的最早开始时间e[ai]和最迟开始时间l[ai]
5.如果e[ai]=l[ai],则ai为关键活动
实验六 最短路经
一、实验目的
熟悉最短路径的实现方法。
了解AOE-网以及最短路径在求解实际问题中的应用。
二、实验要求
熟悉C语言编程。
三、实验内容
从始点v0开始,逐步求v0到其它可达的各顶点的最短路径,直到所有顶点计算完成为止。
四、实验步骤
1.输入e条弧,生成AOE-网的存储结构。
2.初始化: S ← ;
dist[j] ← Edge[0][j], j = 1, 2, …, n-1; // n为图中顶点个数
3.求出最短路径的长度:
dist[k] ← min , i V- S ;
S ← S U ;
4.修改从v0到V-S集合中各顶点的最短路径:
dist[i] ← min,
对于每一个 i 属于 V- S ;
5.判断:若 S = V, 则算法结束,否则转 2。
实验七 二叉排序树
一、实验目的
熟悉二叉排序树的使用。
掌握如何使用C语言实现二叉树的说明、创建以及二叉排序树的生成等操作。
二、实验要求
熟悉C语言编程。
三、实验内容
给定一个记录关键字的值,与二叉排序树的根结点值比较,如果小于根结点的值,则向左子树查找;如果大于根结点的值,则向右子树查找。如果查找到叶子结点leaf,仍没有找到记录,则:如果关键字的值小于leaf的值,则插入该leaf结点的左边,做leaf的左孩子,否则做leaf的右孩子。
四、实验步骤
1.用C语言实现二叉树的说明
2.直接将输入的值作为根结点的值
3.与根结点比较,小于则放到左子树上,大于则放到右子树上。
实验八 希尔排序
一、实验目的
熟悉希尔排序的使用。
掌握如何使用C语言实现若干记录的排序。
二、实验要求
熟悉C语言编程。
三、实验内容
先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
四、实验步骤
1.输入待排序记录
2.首先取一个整数 gap < n(待排序记录数) 作为间隔, 将全部记录分为 gap 个子序列, 所有距离为 gap 的记录放在同一个子序列中
3.在每一个子序列中分别施行直接插入排序。
4.然后缩小间隔 gap, 例如取 gap = gap/2
5.重复上述的子序列划分和排序工作,直到最后取gap = 1, 将所有记录放在同一个序列中排序为止。
实验九 快速排序
一、实验目的
熟悉快速排序的使用。
掌握如何使用C语言实现若干记录的排序。
二、实验要求
熟悉C语言编程。
三、实验内容
通过一趟将待排记录分割成独立的两个部分,其中一部分记录的关键字均比另一部分记录的关键字小。再对两个部分分别进行快速排序。
四、实验步骤
1.输入待排序的记录,并选择第一个记录作为pivotkey记录
2.从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+1
3.从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-1
4.重复2,3,直到low=high,将枢轴记录放在low(high)指向的位置
5.重复2,3,4,直到整个记录有序为止
实验十 堆排序
一、实验目的
熟悉堆排序的使用。
掌握如何使用C语言实现若干记录的排序。
二、实验要求
熟悉C语言编程。
三、实验内容
首先将一个无序序列建成一个堆;然后输出堆顶元素;在输出堆顶元素之后,调整剩余的元素成为一个新堆。
四、实验步骤
1.输入记录,按顺序创建一个完全二叉树
2.根据筛选算法,从最后一个结点开始,一直到根结点,逐步筛选,建造初始堆。
3.输出堆顶记录,将最后一个结点放到堆顶,并做筛选,重新建造一个堆
4.直到所有记录输出为止
‘柒’ 数据结构编程--查找与排序 题
#include <stdlib.h>
#include <stdio.h>
typedef struct node
{
int data;
struct node* next;
struct node* pre;
}node,*link;
int droplink( link &L );
//检查表是否存在,是返回true,否返回false
bool checklink( link &L )
{
if ( L==NULL )
{
return false;
}
else
{
return true;
}
}
//新建一个结点,以data作为它的值,返回指向这个结点的指针
link createnode( int data )
{
link p;
if ( (p = (link)malloc(sizeof(node)))==NULL )
{
printf("malloc failed!@createnode\n");
return NULL;
}
else
{
p->data = data;
p->next = NULL;
p->pre = NULL;
return p;
}
}
//创建一个带头结点的链表,成功返回0,失败返回-1
int create( link &L )
{
if ( checklink(L) )
{
printf( "链表已经存在,先销毁再创建!\n" );
droplink( L );
}
if ( (L = (link)malloc(sizeof(node)))==NULL )
{
printf("malloc failed!\n");
return -1;
}
L->next = NULL;
L->pre = NULL;
return 0;
}
//统计链表长度,成功返回链表长度,失败返回-1
int getlength( link &L )
{
int length = 0;
link p = L;
while ( p->next != NULL )
{
length++;
p = p->next;
}
return length;
}
//根据值查询结点
link findpos( link &L, int data )
{
if ( !checklink(L) )
{
printf( "无此链表\n" );
return NULL;
}
link p = L;
while ( p!=NULL )
{
if ( p->data == data )
{
return p;
}
p = p->next;
}
}
//找出第pos位置上的结点,返回指向这个结点的指针
link findnode( link &L, int pos )
{
if ( !checklink(L) )
{
printf( "无此链表\n" );
return NULL;
}
if ( pos <= 0 )
{
printf("位置过小!@findnode\n");
return NULL;
}
link p = L;
for ( int i=0; i<pos; i++ )
{
if ( p==NULL )
{
printf("位置超出链表长度!@findnode\n");
return NULL;
}
p = p->next;
}
return p;
}
//把n插入至rear之后,成功返回0,失败返回-1
int pushback( link &L, link &n )
{
if ( !checklink(L) )
{
printf( "无此链表\n" );
return -1;
}
int length = getlength(L);
link rear = NULL;
if ( length==0 )
{
rear = L;
}
else
{
rear = findnode( L, length );
}
rear->next = n;
n->pre = rear;
rear = n;
return 0;
}
//把n插入至L的第pos位(0代表头结点),成功返回0,失败返回-1
int insert( link &L, link &n, int pos )
{
if ( !checklink(L) )
{
printf( "无此链表\n" );
return -1;
}
link p = findnode( L, pos );
if ( p==NULL )
{
printf( "查找结点失败!@insert\n" );
return -1;
}
n->next = p->next;
p->next = n;
n->pre = p;
n->next->pre = n;
return 0;
}
//把L链表第pos位置上的结点删除 (0代表头结点),成功返回0,失败返回-1
int delnode( link &L, int pos )
{
if ( !checklink(L) )
{
printf( "无此链表\n" );
return -1;
}
link p = findnode( L, pos );
if ( p==NULL )
{
printf( "查找结点失败!@delnode\n" );
return -1;
}
p->pre->next = p->next;
p->next->pre = p->pre;
free( p );
p = NULL;
return 0;
}
//销毁链表L 成功返回0,失败返回-1
int droplink( link &L )
{
if ( !checklink(L) )
{
printf( "无此链表\n" );
return -1;
}
int length = getlength(L);
while ( length>0 )
{
delnode( L, length );
length = getlength(L);
}
free( L );
L = NULL;
return 0;
}
//对链表进行排序 type为1时是升序排列,为-1时为降序 (冒泡排序法)
void sort( link &L, int type )
{
int length = getlength( L );
if ( length <= 0 )
{
printf("升序过小!\n");
return;
}
switch( type )
{
case 1: printf( "升序排列链表!\n" );break;
case -1: printf( "降序排列链表!\n" );break;
default: printf( "参数错误!\n" );return;
}
for( int i=1; i<length; i++ )
{
for( int j=1; j<length; j++ )
{
printf("i=%d,j=%d,",i,j);
printf("findnode(L,j)->data =%d, findnode(L,j+1)->data=%d\n",findnode(L,j)->data,findnode(L,j+1)->data);
if ( type == -1 )
{
//降序
if ( findnode(L,j)->data < findnode(L,j+1)->data )
{
int t = findnode(L,j)->data;
findnode(L,j)->data = findnode(L,j+1)->data;
findnode(L,j+1)->data = t;
}
}
else
{
//升序
if ( findnode(L,j)->data > findnode(L,j+1)->data )
{
int t = findnode(L,j)->data;
findnode(L,j)->data = findnode(L,j+1)->data;
findnode(L,j+1)->data = t;
}
}
}
}
}
void output( link &L )
{
link p=L->next;
int i=0;
while ( p!=NULL )
{
printf( "[%d]=\t%d\n", i, p->data );
i++;
p=p->next;
}
}
main()
{
int length;
link L = NULL;
//新建链表
create( L );
printf("===输入数据===\n");
printf("请输入链表结点数量:");
scanf( "%d", &length );
if ( length<=0 )
{
printf("数量错误!退出程序\n");
return -1;
}
int i=0;
int data;
link tmp = NULL;
while ( i!=length )
{
printf("请输入data值:" );
scanf( "%d", &data );
tmp = createnode(data);
pushback( L, tmp );
i++;
}
output(L);
printf("===插入新节点===\n");
printf("请输入data值:" );
scanf( "%d", &data );
tmp = createnode(data);
insert( L, tmp, 2 );
output(L);
printf("===查询节点===\n");
printf("请输入要查询的data值:" );
scanf( "%d", &data );
findpos( L, data );
printf("===链表长度为%d===\n", getlength(L));
printf("升序排序后链表为:\n");
sort(L, 1 );
output(L);
printf("降序排序后链表为:\n");
sort(L,-1);
output(L);
getchar();
}
‘捌’ 求数据结构试验 线性表的顺序存储结构
#include<iostream.h>
#include<stdlib.h>
#include <malloc.h>
#define OVERFLOW 0
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100//线性表存储空间的初始增量
#define LISTINCREMENT 10 // ?
typedef struct{
int * elem;// 存储空间基址
int length;//当前长度
int listsize;//当前分配的存储容量
}SqList;
SqList L;
int InitList_Sq(SqList & L){
//构造一个新的线性表。
L.elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)exit(OVERFLOW);//存储容量失败
L.length=0; //空表长度为0
L.listsize=LIST_INIT_SIZE;//存储初始容量
return OK;
}//InitList_Sq
int LIstInsert_Sq(SqList & L,int i,int e){
//在顺序线性表L中第i位置之前插入新的元素e
if(i<1||i>L.length+1) return ERROR;
if(L.length>=L.listsize){
int * newbase=(int *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));
if(!newbase)exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
int * q=&(L.elem[i-1]);
for(int * p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
int ListDelete_Sq(SqList&L,int i,int &e)
{
if((i<1)||(i>L.length))return ERROR;
int *p=&(L.elem[i-1]);
e=*p;
int *q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return OK;
}
void main()
{
SqList L;
int i,n;
int e;
cout<<"输入顺序表的个数:"<<endl;
cin>>n;
int *p=(int *)malloc(n*sizeof(int));
InitList_Sq(L);
cout<<"输入线性表"<<n<<"个元素的值"<<endl;
for(i=0;i<n;i++)
{
cin>>p[i];
L.elem[i]=p[i];
}
cout<<endl;
L.length=i;
cout<<endl;
cout<<"输入要插入元素的值"<<endl;
cin>>e;
cout<<endl;
cout<<"输入要插入的位置"<<endl;
cin>>i;
LIstInsert_Sq( L, i, e);
for(i=0;i<n+1;i++)
cout<<L.elem[i];
cout<<endl;
cout<<"输入要删除的位置"<<endl;
cin>>i;
ListDelete_Sq(L,i,e)
;for(i=0;i<n;i++)
cout<<L.elem[i];
free(p);
‘玖’ C语言 查找算法实现
#include
int main() {
int i,x,n,*result = NULL;
int a[10],low,high,mid;
scanf_s("%d",&n);
// 确保输入的数据是非递减的
for(i = 0 ; i < n && i < 10 ; i++) {
scanf_s("%d",&a[i]);
}
fflush(stdin); // 如果输入的数组元素多于10个,则废弃
scanf_s("%d",&x);
low = 0,high = n - 1;
while(low <= high) {
mid = (low + high) / 2;
if(x == a[mid]) {
result = &a[mid]; // 这里给出的是查找到该元素的指针
break;
}
else if(x < a[mid]) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
if(result != NULL) {
printf("%d\n",*result);
}
else {
printf("no result\n");
}
return 0;
}