藍橋杯-基礎練習-查詢整數(C語言)
阿新 • • 發佈:2021-01-23
技術標籤:藍橋杯
正確答案:
#include<stdio.h> #include<math.h> #define N 1001 int num[N]; int main() { int n,i,a,flag=0; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&num[i]); } scanf("%d",&a); for(i=0;i<n;i++) { if(num[i]==a) { printf("%d\n",i+1); flag=1; break; } } if(!flag) { printf("-1\n"); } return 0; }
我的答案:錯誤,非常鬼畜,還需測試
#include <stdio.h> int BinarySearch(int s[],int n,int key) { int low,high,mid; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; //計算中間元素序號 if(s[mid]==key) //中間元素與關鍵字相等 return mid; else if(s[mid]>key) //中間元素大於關鍵字 high=mid-1; else low=mid+1; } return -1; //查詢失敗返回-1 } int main() { int n,x,i; int a[n]; scanf("%d",&n); for(i = 0; i < n; i++) scanf("%d",&a[i]); scanf("%d",&x); int pos=BinarySearch(a,n,x); if(pos>=0) printf("%d",pos-1); else printf("-1"); return 0; }
思路:折半查詢