1. 程式人生 > >折半查找算法

折半查找算法

退出 sizeof void 折半查找算法 sig interval %d ids int

#include <stdio.h>

int halfIntervalSearch(int *p, unsigned int len, int num)
{
unsigned int highSN = len-1;
unsigned int lowSN = 0;
unsigned int midSN = 0;
int ret = -1;

//lowSN與highSN折半法無限靠近,直至lowSN==highSN找到。
//一旦找不到,則當lowSN==highSN後,lowSN繼續+1 or highSN繼續-1,直到lowSN > highSN退出
while (lowSN <= highSN)
{
midSN = (lowSN + highSN)/2;

if (num == p[midSN])
{
ret = midSN;
break;
}
else if (num > p[midSN])
{
lowSN = midSN + 1;
}
else if (num < p[midSN])
{
highSN = midSN - 1;
}
}

return ret;
}

void main(void)
{
int numberTable[] = {2,47};
int sn = -1;

sn = halfIntervalSearch(numberTable, sizeof(numberTable)/sizeof(int), 47);
printf("find sn number: %d\n", sn);
}

折半查找算法