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.

18 tháng 5

o sánh lần lượt từng phần tử trong danh sách với số cần tìm (7), đến khi tìm thấy thì dừng lại và thông báo vị trí.

cần 6 bước để tìm thấy số 10 trong danh sách vừa sắp sếp


đây nhé

Dãy ban đầu: [7.5, 9.0, 6.0, 8.5, 7.0]

  • Lượt 1: so sánh dần, đổi chỗ → [7.5, 6.0, 8.5, 7.0, 9.0]
  • Lượt 2: tiếp tục đổi chỗ → [6.0, 7.5, 7.0, 8.5, 9.0]
  • Lượt 3: tiếp tục → [6.0, 7.0, 7.5, 8.5, 9.0]
  • Lượt 4: dãy đã đúng thứ tự.

Kết quả: [6.0, 7.0, 7.5, 8.5, 9.0]

23 tháng 4 2023

giúp tôi giải câu này với

Thuật toán tìm kiếm nhị phân được thực hiện trên một danh sách đã được (1) sắp xếp. Bắt đầu từ vị trí ở (2) giữa của danh sách. Tại mỗi bước, ta so sánh giá trị cần tìm với giá trị ở vị trí đó. Nếu giá trị cần tìm lớn hơn, ta tìm ở (3) nửa phải của danh sách. Nếu nhỏ hơn, ta tìm ở (4) nửa trái của danh sách.

21 tháng 9

Thuật toán tìm kiếm nhị phân được mô tả bằng ngôn ngữ tự nhiên:

- Bước 1: Xác định danh sách (mảng) đã được sắp xếp theo thứ tự tăng dần hoặc giảm dần.

- Bước 2: Đặt hai biến tráiphải lần lượt là chỉ số phần tử đầu và phần tử cuối của danh sách.

- Bước 3: Tính chỉ số giữa = (trái + phải) / 2 (lấy phần nguyên).

- Bước 4: So sánh giá trị cần tìm với phần tử ở vị trí giữa:

+ Nếu bằng, thì kết thúc và trả về vị trí giữa.

+ Nếu nhỏ hơn, thì cập nhật phải = giữa - 1 để tiếp tục tìm trong nửa bên trái.

+ Nếu lớn hơn, thì cập nhật trái = giữa + 1 để tiếp tục tìm trong nửa bên phải.

- Bước 5: Lặp lại bước 3 và bước 4 cho đến khi tìm thấy hoặc khi trái > phải (nghĩa là không có phần tử cần tìm).

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!