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.
Các câu hỏi dưới đây có thể giống với câu hỏi trên
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!
P
0
P
0
tham khảo
Dãy (a)
a1
a2
a3
a4
a5
a6
a7
a8
a9
a10
Giải thích
Ban đầu
8
17
23
1
12
7
5
1
13
10
Tiếp theo so sánh a1 và a2, a2 > a2 đổi chổ a1 và a2
Sau bước 1
17
8
23
1
12
7
5
1
13
10
Tiếp theo so sánh a2 và a3, a3 > a2 đổi chổ a2 và a3
Sau bước 2
17
23
8
1
12
7
5
1
13
10
Tiếp theo so sánh a3 và a4, a3 > a4 giữ nguyên vị trí
Sau bước 3
17
23
8
1
12
7
5
1
13
10
Tiếp theo so sánh a4 và a5, a5 > a4 đổi chổ a4 và a5
Sau bước 4
17
23
8
12
1
7
5
1
13
10
Tiếp theo so sánh a5 và a6, a6 > a5 đổi chổ a5 và a6
Sau bước 5
17
23
8
12
7
1
5
1
13
10
Tiếp theo so sánh a6 và a7, a7 > a6 đổi chổ a6 và a7
Sau bước 6
17
23
8
12
7
5
1
1
13
10
Tiếp theo so sánh a7 và a8, a7 = a8 giữ nguyên vị trí
Sau bước 7
17
23
8
12
7
5
1
1
13
10
Tiếp theo so sánh a8 và a9, a9 > a8 đổi chổ a8 và a9
Sau bước 8
17
23
8
12
7
5
1
13
1
10
Tiếp theo so sánh a9 và a10, a10 > a9 đổi chổ a9 và a10
Sau bước 9
17
23
8
12
7
5
1
13
10
1
Tiếp theo ta quay lại lại bước 1và thực hiện vòng lặp tương tự.
Dãy kết quả
23
17
13
12
10
8
7
5
1
1