char *bin(sp,str,n,addr)
% j2 H' w# _) X6 s0 X% Fchar *sp[],*str;
' M5 t" ?" V/ ?' C' Xint n,*addr;8 T4 J" Q8 `0 A' R8 k1 B0 E2 G O
{
8 v! `% u0 M6 f) O" y4 t int left,right,mid;$ o# x9 i2 @0 ^" d
left=0;
) U4 R; i5 f0 n9 W right=n-1;
. W x( ], V7 D9 X+ |' ^ while(left<=right)
9 G+ u2 Z; T2 ?( F# ]. m {: O; x" X$ [1 a* R& \' c6 W* M
mid=(left+right)/2;
. C) X, {0 z- Z if(strcmp(str,sp[mid])<0)
/ u% \' N! w8 H0 a4 f6 r& j7 g right=mid-1;; Y( z' c' J& K! g/ q( _5 s
else if(strcmp(str,sp[mid])>0)* P2 V' f& I. ]: j& @! a2 T
left=mid+1;/ k7 e# I- N1 D% g
else; m1 D; O9 W( A: |
{* _9 L# t8 V. X) \) }
return(sp[mid]);
8 b; {6 \( H' ]2 s4 C0 H7 I. P *addr=mid;
/ B! `8 b& e; i% c7 t6 ]6 n }5 T$ [8 X& I% J- f' b
}8 ^6 S3 {2 [3 t Q% g
return(0);
C# {7 \" s) P/ a4 a( s}+ P/ s% ]6 E" D0 v1 C0 `
这是一个用二分法查找字符串的函数,我有很多不明白,如right=mid-1;为什么要减1,right=mid行不行,还有str,sp[mid]有点乱,是不是地址?