既然是头一回写博客就允许我小小的多扯一会吧~之所以想要写博客并非是想要炫耀什么,其实鄙人从小就是一个不会表达的理科狗,因此现在重拾“笔杆”来这里敲代码主要原因很简单,就是想通过这样一个平台把自己平日里所学习的琐碎零散的知识做个简单的整理(也可认为是笔记吧),毕竟根据博主对编程有限而粗浅的理解,这门艺术性的科学与其他很多科目一样十分注重思考和反反复复的琢磨,举个很通俗也很简单的例子,你今天苦心积虑所写的代码如果不做一些记录,那么再过十天半个月的时光,待你重温这些枯燥的代码块时,说不定一些细节性的东西连你自己也看不懂。。。所以这就是我在这里废话这么多的原因,不多说了,,,,
**放码过来:**
typedef struct{
int data[MAXSIZE];
int length;
}SSTable;
` ```*正式进入二分法*
int BinarySearch(SSTable*ST,int key){
int low,high,mid;
//***igh,low,mid分别表示表格的首部尾部中部
lo**
l**
low = 0;
high = ST->length-1;
while(low<=high){
//***id的大小,进行mid的移动---
mid**
mi**
mid =(high+low)/2;
if(ST->data[mid]==key){
return mid;
}
else{
if(ST->data[mid]<key){
low = mid+1;
}
else
high = mid-1;
}
}return -1;
}
````接下来将完整的代码附过来
<div class="se-preview-section-delimiter"></div>
这里写代码片
“`
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef struct{
int data[MAXSIZE];
int length;
}SSTable;
int BinarySearch(SSTable*ST,int key){
int low,high,mid;
low = 0;
high = ST->length-1;
while(low<=high){
mid =(high+low)/2;
if(ST->data[mid]==key){
return mid;
}
else{
if(ST->data[mid]<key){
low = mid+1;
}
else
high = mid-1;
}
}
return -1;
}
void Print(SSTable *ST){
int i;
printf("二分查找的结果为:\n");
for(i=0;i<ST->length;i++){
printf("%3d",ST->data[i]);
}
printf("\n");
}
main(){
int i,j,key;
SSTable ST;
int a[MAXSIZE];
printf("按照从小到大的顺序输入十个数:\n");
for(i=0;i<MAXSIZE;i++){
scanf("%3d",&a[i]);
ST.data[i] = a[i];
}
ST.length = MAXSIZE;
printf("开始二分查找:\n");
Print(&ST);
printf("输入你要找的元素:");
scanf("%d",&key);
j = BinarySearch(&ST,key);
if(j!=-1)
printf("元素%d在表中的位置是:%d\n",key,j);
}
![运行结果](https://img-blog.csdn.net/20151125213138272)