注æï¼éç¨âäºåæ¥æ¾âæ¶ï¼åå§çæ°ç»æå
¶ä»çº¿æ§è¡¨ä¸çæ¯ä¸ªå
ç´ é½å¿
é¡»æ¯æä¸å®ç顺åºæåçï¼ä»å¤§å°å°ï¼æä»å°å°å¤§ï¼ï¼
该ç®æ³çåºæ¬ææ³ï¼å¯¹ä¸ä¸ªæåºæ°æ®åºåï¼æ»æ¯å
ææ¥æ¾ç®æ ä¸è¯¥åºåçä¸é´çå
ç´ è¿è¡æ¯è¾ï¼æ们å设该åºåæ¯ç±ä»å°å°å¤§æåçï¼if(key > data[mid]),åkeyä¸å®å¨data[mid]çåè¾¹ï¼äºæ¯ï¼æmidå°åºådata[end]åæä¸åï¼æ¤æ¶mid = (mid + end) / 2,ä¾æ¬¡ç±»æ¨
åèç¨åºï¼
#include<stdio.h>
#define MAXSIZE 26 //å®ä¹ç´¢å¼è¡¨çæé¿é¿åº¦
typedef char TYPE;
int blksearch(TYPE R[],TYPE K);
void main()
{
int num, i;
TYPE R[N + 1];
TYPE K;
for(i = 0;i<N;i++)
R[i]='a'+i;
printf("\nplease input the key number:\n");
K=getchar();
num=blksearch(R,K);
if(num!=-1)
printf("第%d个æ¯å
³é®å\n",num+1);
else
printf("æ¥æ¾å¤±è´¥ï¼\n");
}
int blksearch(TYPE R[],TYPE K) //ååæ¥æ¾
{
int low1,mid,high1;
low1=0;
high1=N - 1; //äºåæ¥æ¾åºé´ä¸ä¸çåå¼
while(low1<=high1)
{
mid=(low1+high1)/2;
if(K < R[mid])
high1=mid-1;
else
if(K > R[mid])
low1=mid+1;
else
return mid; //å¦ææ¾å°keyï¼ç«å³è¿åkeyçä½ç½®
}
return -1;// åªè¦ä¸é¢çreturnè¯å¥æ²¡æ§è¡ï¼ååæ°ç»ä¸æ keyï¼è¿å-1
}
温馨提示:答案为网友推荐,仅供参考