Bạn chưa đăng nhập. Vui lòng đăng nhập để hỏi bài
hà my

Cho dãy số sau 10,2,5,12,20,6,8,15,18 A,sắp xếp dãy số sau theo thứ tự tăng dần B,hãy liệt kê các bước tìm kiếm số 15 trong dãy số đã sắp xếp theo thuật toán tìm kiếm nhị phân

Giúp em Vs ạ , mai em nộp r

Trương Huy Hoàng
13 tháng 12 2023 lúc 22:50

#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!


Các câu hỏi tương tự
hà my
Xem chi tiết
hà my
Xem chi tiết
Đăng Quang Nguyễn
Xem chi tiết
phương thảo
Xem chi tiết
Trinh Nguyễn
Xem chi tiết
Hữu Tuấn
Xem chi tiết
Quỳnh Ly Vũ
Xem chi tiết
Từ Hiếu
Xem chi tiết
Nguyễn Diệp Chi
Xem chi tiết