1 条题解
-
0
C :
#include<stdio.h> int binary_search(int arr[], int n, int k) { int i=-1; int low=0,high=n-1,mid; while(low<=high) { mid=(high+low)/2; if(arr[mid]==k) { i=mid; break; } else if(arr[mid]>k) high=mid-1; else low=mid+1; } return i; } int main(){ int n; scanf("%d",&n); int a[n]; for(int i=0;i<n;i++){ scanf("%d",&a[i]); } int key; scanf("%d",&key); int result = binary_search(a,n,key); if(result>=0){ printf("%d",result+1); printf("\n"); } else{ printf("-1"); } return 0; }C++ :
#include <iostream> using namespace std; //二分查找 int binary(int a[],int n,int x){ int r = -1; int left = 0; int right = n - 1; int mid; while(left <= right){ mid = (left + right) / 2; if(a[mid] == x){ r = mid; break; }else if(x < a[mid]){ right = mid - 1; }else if(x > a[mid]){ left = mid + 1; } } return r; } int main(){ int n,i,x,p; int a[1000]; cin>>n; for(i = 0;i < n;i++){ cin>>a[i]; } cin>>x; p = binary(a,n,x); if(p != -1){ cout<<p + 1<<endl; }else{ cout<<p<<endl; } }Python :
n=int(input()) sr=input().split() a=[] for i in range(n): a.append(int(sr[i])) x=int(input()) l=0 r=n-1 while(l<=r): m=(l+r)//2 if(a[m]==x): print(m+1) break elif(a[m]>x): r=m-1 else: l=m+1 if(l>r): print(-1)
- 1
信息
- ID
- 231
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者