1、low,high指针分别指向队头和队尾;
2、定义flag来保存 flag = (low+high)/ 2位置;
3、通过比较 数组中flag为止元素value_one 和 需要查找的 find_value;
如果是大于 high = flag-1;
如果是小于 low = flag+1;
如果是等于 返回 flag 保存的位置;
4、若果 low > high 就返回未找到;
intsearch(int max_size,int*arr,int find_value){int flag;int low =0;int high = max_size;while(1){if(arr[low]!=find_value&&arr[high]!=find_value){
flag =(int)(low+high)/2;if(arr[flag]==find_value){return flag;}elseif(arr[flag]>find_value){
high = flag-1;}else{
low = flag+1;}}else{if(arr[low]==find_value){
flag = low;break;}else{
flag = high;break;}}if(low>high){
flag =-1;break;}}return flag;}
二、全部代码部分
#include<stdlib.h>#include<stdio.h>// 0 12 24 36 48 60 72 84 96 108;intsearch(int max_size,int*arr,int find_value){int flag;int low =0;int high = max_size;while(1){if(arr[low]!=find_value&&arr[high]!=find_value){
flag =(int)(low+high)/2;if(arr[flag]==find_value){return flag;}elseif(arr[flag]>find_value){
high = flag-1;}else{
low = flag+1;}}else{if(arr[low]==find_value){
flag = low;break;}else{
flag = high;break;}}if(low>high){
flag =-1;break;}}return flag;}intmain(){int arr[10];for(int i=0;i<9;i++){
arr[i]= i*10+(i*2);}for(int i=0;i<9;i++){printf("%d\t",*(arr+i));}printf("\n: %d",search(9,arr,48));return0;}