1 条题解

  • 0
    @ 2025-10-10 15:45:57

    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
    上传者