机试算法讲解: 第9题 查找,对了,当然有哨兵

来源:互联网 发布:数据库与缓存保持一致 编辑:程序博客网 时间:2024/06/04 01:21
/*问题:输入一个数n,输入n个数值不同的数,输入给定值x,输出x在数组中的下标,从0开始,若不在数组中则输出-1输入:21 30输出:-1思路:用哨兵,从后向前搜索*/#include <stdio.h>#include <stdlib.h>#include <memory.h>int main(int argc,char* argv[]){int iNum;while(EOF!=scanf("%d",&iNum) && iNum >= 1 && iNum <= 200){//bool isBreak = false;int* iArr = (int*)malloc(iNum*sizeof(iNum));int iValue;for(int i = 0;i < iNum ; i++){scanf("%d",&iValue);*(iArr+i) = iValue;}int iSearch;scanf("%d",&iSearch);int iSoladir = -1;//设置哨兵for(int j = iNum-1 ; j > iSoladir ; j--){if(iArr[j]==iSearch){printf("%d",j);//isBreak = true;break;}}if(j==iSoladir){printf("%d",j);}free(iArr);}getchar();return 0;}

0 0