K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

16 tháng 11 2022

Thì chúng ta sẽ chia đôi ra và tìm cho đến khi nào tìm ra số đó hoặc không thể chia đôi được nữa là đc kết quả của bài toán

a: 

CHia đôi lần 1: Chúng ta sẽ lấy số a5. Vì 6<a5 nên sẽ chạy về phía bên phải của a5.

Chia đôi lần 2: Lần này chúng ta sẽ chạy từ a6 đến a10. Vì x=a8 nên kết thúc bài

b: Chia đôi lần 1: Chúng ta sẽ lấy số a5. Vì x<a5 nên sẽ chạy về phía bên phải của a5

Chia đôi lần 2: Chúng ta sẽ chạy từ a6 đến a10. Lấy số a8 nằm ở chính giữa. Vì x>a8 nên sẽ chạy về phía bên trái của a8

Chia đôi lần 3: Tương tự lần 2

=>Không tìm được kết quả

13 tháng 12 2023

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll a[]={10,2,5,12,20,6,8,15,18}; //mảng đã cho
    ll n=sizeof(a)/sizeof(a[0]); //độ dài mảng
    sort(a,a+n); //sắp xếp mảng
    //Thuật toán tìm kiếm nhị phân
    ll l=0, r=n-1;
    while(l<=r) {
        ll mid=(l+r)/2; //Tìm phần tử giữa left và right
        if(a[mid]<15) l=mid+1; //Vì từ đoạn [0,mid] thì phần tử nhỏ hơn 15 nên ta duyệt từ khoảng (mid,r]
        else r=mid-1; //vì thấy nên rút r để thu hẹp phạm vi
    }
    cout << l+1; //in ra kq (vì bắt đầu từ 0 đến n-1 nên phải tăng thêm để ra vị trí đúng)
}

(Bạn có thể dựa vào code mình để rút ra các bước)

Chúc bạn học tốt!

1 tháng 1

Chọn \(A\).