#include <stdio.h>
int main()
{
int T[5] = {2, 7, 12, 43, 60};
/* 索引表 */
int index[3] = {7, 43, 60};
int key = 43;
int i, j;
int location = -1;
for(i = 0; i < 5; i++)
{
}
/* 查找所在的块 */
for(i = 0; i < 3; i++)
{
if(key <= index[i])
break;
}
/* 在对应块中进行顺序查找 */
if(i < 3)
{
for(j = i * 2; j < (i + 1) * 2 && j < 5; j++)
{
if(T[j] == key)
{
location = j + 1;
break;
}
}
}
if(location != -1)
printf("查找成功!\n关键字的位置是:%d\n", location
); else
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbigpCnsKICAgIGludCBUWzVdID0gezIsIDcsIDEyLCA0MywgNjB9OwoKICAgIC8qIOe0ouW8leihqCAqLwogICAgaW50IGluZGV4WzNdID0gezcsIDQzLCA2MH07CgogICAgaW50IGtleSA9IDQzOwogICAgaW50IGksIGo7CiAgICBpbnQgbG9jYXRpb24gPSAtMTsKCiAgICBwcmludGYoIuWOn+Wni+aVsOaNruS4uu+8mlxuIik7CgogICAgZm9yKGkgPSAwOyBpIDwgNTsgaSsrKQogICAgewogICAgICAgIHByaW50ZigiJWQgIiwgVFtpXSk7CiAgICB9CgogICAgcHJpbnRmKCJcbuafpeaJvuWFs+mUruWtl++8miVkXG4iLCBrZXkpOwoKICAgIC8qIOafpeaJvuaJgOWcqOeahOWdlyAqLwogICAgZm9yKGkgPSAwOyBpIDwgMzsgaSsrKQogICAgewogICAgICAgIGlmKGtleSA8PSBpbmRleFtpXSkKICAgICAgICAgICAgYnJlYWs7CiAgICB9CgogICAgLyog5Zyo5a+55bqU5Z2X5Lit6L+b6KGM6aG65bqP5p+l5om+ICovCiAgICBpZihpIDwgMykKICAgIHsKICAgICAgICBmb3IoaiA9IGkgKiAyOyBqIDwgKGkgKyAxKSAqIDIgJiYgaiA8IDU7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKFRbal0gPT0ga2V5KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGogKyAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYobG9jYXRpb24gIT0gLTEpCiAgICAgICAgcHJpbnRmKCLmn6Xmib7miJDlip/vvIFcbuWFs+mUruWtl+eahOS9jee9ruaYr++8miVkXG4iLCBsb2NhdGlvbik7CiAgICBlbHNlCiAgICAgICAgcHJpbnRmKCLmn6Xmib7lpLHotKXvvIFcbiIpOwoKICAgIHJldHVybiAwOwp9