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.

đâ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]

Vòng lặp 1:
Dãy ban đầu: 3, 2, 4, 1, 5
Tìm số nhỏ nhất từ vị trí 0 đến 4 → là 1
Đổi chỗ 1 với 3
Kết quả sau vòng 1: 1, 2, 4, 3, 5
Vòng lặp 2:
Dãy hiện tại: 1, 2, 4, 3, 5
Tìm số nhỏ nhất từ vị trí 1 đến 4 → là 2
Đã đúng vị trí → không đổi
Kết quả sau vòng 2: 1, 2, 4, 3, 5
Vòng lặp 3:
Dãy hiện tại: 1, 2, 4, 3, 5
Tìm số nhỏ nhất từ vị trí 2 đến 4 → là 3
Đổi chỗ 3 với 4
Kết quả sau vòng 3: 1, 2, 3, 4, 5
Vòng lặp 4:
Dãy hiện tại: 1, 2, 3, 4, 5
Tìm số nhỏ nhất từ vị trí 3 đến 4 → là 4
Đã đúng vị trí → không đổi
Kết quả sau vòng 4: 1, 2, 3, 4, 5
Kết luận:
Dãy số sau khi sắp xếp tăng dần là: 1, 2, 3, 4, 5
Kết quả VL1: 1, 2, 4, 3, 5
Kết quả VL2: 1, 2, 4, 3, 5
Kết quả VL3: 1, 2, 3, 4, 5
Kết quả VL4: 1, 2, 3, 4, 5
Kết quả VL5: 1, 2, 3, 4, 5

Đáp án : 1. Phần tử có giá trị nhỏ nhất trong dãy được tìm thấy và đổi chỗ cho phần tử đứng đầu dãy.

là một thuật toán đơn giản, so sánh từng cặp phần tử liền kề và hoán đổi chúng nếu chúng sai thứ tự, cho đến khi toàn bộ dãy được sắp xếp.
- Thuật toán sắp xếp nổi bọt là một phương pháp sắp xếp đơn giản bằng cách so sánh cặp phần tử kề nhau và hoán đổi nếu không đúng thứ tự. Sau mỗi vòng lặp, phần tử lớn nhất (hoặc nhỏ nhất) sẽ được đẩy về đúng vị trí. Quá trình tiếp tục cho đến khi không còn hoán đổi nào nữa.
- Thuật toán sắp xếp chọn hoạt động bằng cách tìm phần tử nhỏ nhất trong danh sách chưa sắp xếp và đổi chỗ với phần tử đầu tiên của danh sách chưa sắp xếp. Tiếp tục lặp lại cho đến khi danh sách được sắp xếp hoàn toàn.

#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ách làm theo tìm kiếm nhị phân:
- Xác định khoảng cần tìm: từ 1001 đến 1500.
- Tìm số ở giữa: \(\frac{1001 + 1500}{2} = 1250 , 5 \approx 1250\).
- So sánh 1320 với 1250. Vì 1320 > 1250, ta bỏ nửa trái (1001 → 1250), chỉ giữ nửa phải (1251 → 1500).
- Lấy số giữa của khoảng mới: \(\frac{1251 + 1500}{2} = 1375 , 5 \approx 1375\).
- So sánh 1320 với 1375. Vì 1320 < 1375, ta bỏ nửa phải (1375 → 1500), chỉ giữ nửa trái (1251 → 1374).
- Lấy số giữa của khoảng mới: \(\frac{1251 + 1374}{2} = 1312 , 5 \approx 1312\).
- So sánh 1320 với 1312. Vì 1320 > 1312, ta bỏ nửa trái, giữ nửa phải (1313 → 1374).
- Lấy số giữa: \(\frac{1313 + 1374}{2} = 1343 , 5 \approx 1343\).
- So sánh 1320 với 1343. Vì 1320 < 1343, ta giữ nửa trái (1313 → 1342).
- Lấy số giữa: \(\frac{1313 + 1342}{2} = 1327 , 5 \approx 1327\).
- So sánh 1320 với 1327. Vì 1320 < 1327, ta giữ nửa trái (1313 → 1326).
- Lấy số giữa: \(\frac{1313 + 1326}{2} = 1319 , 5 \approx 1319\).
- So sánh 1320 với 1319. Vì 1320 > 1319, ta giữ nửa phải (1320 → 1326).
- Lấy số giữa: \(\frac{1320 + 1326}{2} = 1323\).
- So sánh 1320 với 1323. Vì 1320 < 1323, ta giữ nửa trái (1320 → 1322).
- Lấy số giữa: \(\frac{1320 + 1322}{2} = 1321\).
- So sánh 1320 với 1321. Vì 1320 < 1321, ta giữ nửa trái (1320 → 1320).
- Còn lại đúng một số 1320 → tìm thấy chiếc điện thoại cần mua. ✅
Khái niệm: Duyệt mảng, mỗi lần chọn phần tử nhỏ nhất còn lại, hoán vị lên vị trí đầu rồi cố định. Tốt nhất khi: mảng nhỏ, đơn giản, hoặc chỉ cần giải thích thuật toán cơ bản. Ví dụ minh hoạ đã trình bày giúp hình dung rõ cách hoạt động.
Tìm kiếm khách hàng trong 1 dành sách