文章

81

粉丝

2

获赞

520

访问

11.2k

头像
查找 题解:
P1107
发布于2026年3月17日 22:34
阅读数 73

#include <iostream>
using namespace std;

int main(){
    int n;
    cin >> n;

    int a[105];
    for(int i = 0; i < n; i++){
        cin >> a[i];
    }

    int x;
    cin >> x;

    // 1. 无序顺序查找
    int pos1 = -1, cnt1 = 0;
    for(int i = 0; i < n; i++){
        cnt1++;
        if(a[i] == x){
            pos1 = i ; 
            break;
        }
    }

    // 2. 有序顺序查找
    int pos2 = -1, cnt2 = 0;
    for(int i = 0; i < n; i++){
        cnt2++;
        if(a[i] == x){
            pos2 = i;
            break;
        }
        if(a[i] > x){
            break;
        }
    }

    // 3. 二分查找
    int pos3 = -1, cnt3 = 0;
    int l = 0, r = n - 1;

    while(l <= r){
        int mid = (l + r) / 2;
        cnt3++;

        if(a[mid] == x){
            pos3 = mid;
            break;
        }else if(a[mid] < x){
            l = mid + 1;
        }else{
            r = mid - 1;
        }
   ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发