前几天闲来无事,写了一段 C 的"二分查找法找数字位置"的算法. /** *//** * 二分查找法找数字 * * 雲飛揚 * 2008.4.10 */#include <stdio.h>#include <stdlib.h>#include <time.h> /**//*//////////////////////////////////////////////////////////////////*/#define length 5/**//*//////////////////////////////////////////////////////////////////*/struct num...{ int number; /**//* 数字 */ int i; /**//* 编号指针 */}numList[length];int find(int begin, int end, int number, struct num array[length]);int pos;/**//*//////////////////////////////////////////////////////////////////*/int main()...{ int number, index, count, m, n, tmp1, tmp2; srand((unsigned)time(NULL)); printf ("请输入 %d 个数: ", length); for(count = 0;count != length;++count) ...{ scanf("%6d",&numList[count].number); numList[count].i = rand() % 100; } printf ("你输入的 %d 个数为: ", length);/**//*//////////////////////////////////////////////////////////////////*/ for (m = 0;m != length;++m) ...{ for(n = m;n != length;++n) ...{ if(numList[m].number > numList[n].number) ...{ tmp1 = numList[m].number; numList[m].number = numList[n].number; numList[n].number = tmp1; tmp2 = numList[m].i; numList[m].i = numList[n].i; numList[n].i = tmp2; } } }/**//*//////////////////////////////////////////////////////////////////*/ for(count = 0;count != length;++count) ...{ printf("%6d",numList[count].number); } printf("%6 --- 数字 "); for(count = 0;count != length;++count) ...{ printf("%6d",numList[count].i); } printf ("%8 --- 编号(随机生成) 请输入你要查找的数 "); scanf ("%d",&number); index = find(0, length - 1, number, numList); if(-1 == index)/**//* -1 为查找失败 */ ...{ printf ("没有找到这个数."); } else ...{ printf ("你要查找的数 %d 的编号是 %d. ", number, index); } return 0;}/**//*//////////////////////////////////////////////////////////////////*/int find(int begin, int end, int number, struct num array[length])...{ while(begin <= end) ...{ pos = (begin + end) / 2; if(array[pos].number == number) ...{ return array[pos].i; } else if(number < array[pos].number) ...{ return find(begin, pos - 1, number, array); } else ...{ return find(pos + 1, end, number, array); } } return -1;}