#include <iostream> #include <string.h> //二分查找 int lookup(char *word, char *array[], int narray) { int l,r; l = 0; r = narray - 1; int mid,result; while( l <= r ) { mid = (l + r)/2; result = strcmp(word, array[mid]); if(result == 0) { return mid+1; } else if(result < 0) { r = mid - 1; continue; } else if(result > 0) { l = mid + 1; continue; } else { //非法结果 //assert(0); } } return -1; } int compare_str( const void* a, const void* b ) { char** arg1 = (char**) a; char** arg2 = (char**) b; int cmp = strcmp(*arg1,*arg2); if( cmp < 0 ) return -1; else if( cmp == 0 ) return 0; else return 1; } int _tmain(int argc, _TCHAR* argv[]) { char *Arrays[] = { "qishi", "dasdf", "ccsdrd", "aadcww", "hfghre", "cgtyj" }; char *p = "ccsdrd"; //排序 qsort(Arrays, 6, sizeof(char)*4, compare_str); cout<<lookup(p, Arrays, 6)<<endl; system("pause"); return 0; }