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
VT
0

R
0


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!
Thuật toán sắp xếp nổi bọt:
- Cách làm: So sánh và đổi chỗ ngay lập tức các phần tử liền kề nếu chúng sai thứ tự.
- Mục tiêu: Đẩy phần tử lớn nhất (hoặc nhỏ nhất) "nổi" dần về cuối mảng sau mỗi lượt duyệt.
- Đặc điểm: Thực hiện nhiều lần hoán đổi.
Thuật toán sắp xếp chọn:
- Cách làm: Tìm phần tử nhỏ nhất (hoặc lớn nhất) trong phần chưa sắp xếp rồi đổi chỗ một lần về đúng vị trí đầu tiên của phần đó.
- Mục tiêu: Đặt từng phần tử đúng vị trí của nó sau mỗi lượt duyệt.
- Đặc điểm: Thực hiện ít lần hoán đổi hơn.