Câu hỏi:
11/05/2023 186Cho một dãy số nguyên được sắp xếp theo thứ tự tăng dần, hãy tìm một vị trí thứ i trong dãy sao cho phần tử thứ i có giá trị bằng i.
Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).
Quảng cáo
Trả lời:
Để tìm vị trí thứ i trong dãy số sao cho phần tử thứ i có giá trị bằng i, ta có thể sử dụng phương pháp chia để trị như sau:
1. Tìm giá trị trung bình của left và right: mid = (left + right) // 2
2. Nếu giá trị tại vị trí mid bằng mid, tức là A[mid] == mid, thì trả về mid
3. Nếu giá trị tại vị trí mid lớn hơn mid, tức là A[mid] > mid, thì tiếp tục tìm vị trí thích hợp trong đoạn từ left đến mid-1
4. Nếu giá trị tại vị trí mid nhỏ hơn mid, tức là A[mid] < mid, thì tiếp tục tìm vị trí thích hợp trong đoạn từ mid+1 đến right
5. Nếu không tìm được vị trí thích hợp nào, tức là left > right, thì trả về -1
Ví dụ
Kết quả sẽ là "Vị trí thích hợp là: 3", tức là phần tử thứ 3 trong dãy A có giá trị bằng 3.
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Cho một dãy số bất kì (chưa được sắp xếp) và một số K, hãy tìm số lần xuất hiện của K trong dãy số trên. Yêu cầu sử dụng phương pháp chia để trị.
Câu 2:
Cho trước dãy số A đã sắp xếp theo thứ tự tăng dần, cho trước hằng số C. Cần thiết lập hai hàm sau bằng kĩ thuật chia để trị:
– Hàm firstInd(A, left, right, C) sẽ tìm chỉ số của phần tử đầu tiên của dãy A có giá
trị bằng C. Nếu không sẽ trả về -1.
– Hàm lastInd(A, left, right, C) sẽ tìm chỉ số của phần tử cuối cùng của dãy A có giá trị bằng C. Nếu không thấy sẽ trả về – 1.
Từ hai hàm đã thiết kế trên, đưa ra một cách giải khác cho bài toán trong nhiệm vụ 1. Lời giải này có độ phức tạp O(logn).
Câu 3:
Cho một dãy số A bất kì. Để xác định một số C cho trước xuất hiện trong dãy A bao nhiều lần thì làm thế nào?
Câu 4:
Chỉnh sửa nâng cấp chương trình của nhiệm vụ thực hành để đưa ra kết quả là vùng các phần tử có giá trị bằng C của dãy gốc, tức là yêu cầu đưa ra chỉ số đầu, chỉ số cuối và số lượng phần tử của vùng có giá trị bằng C.
Ví dụ nếu A = [0, 1, 2, 2, 2, 2, 4, 5, 5, 6], C = 2, thì kết quả trả lại là 2, 5, 4.
15 câu Trắc nghiệm Tin học 11 KNTT Tin học ứng dụng Bài 11: Cơ sở dữ liệu có đáp án
15 câu Trắc nghiệm Tin học 11 KNTT Tin học ứng dụng Bài 10: Lưu trữ dữ liệu và khai thác thông tin phục vụ quản lí có đáp án
15 câu Trắc nghiệm Tin học 11 KNTT Tin học ứng dụng Bài 12: Hệ quản trị cơ sở dữ liệu và hệ cơ sở dữ liệu có đáp án
Đề thi cuối học kì 1 Tin học 11 Kết nối trí thức có đáp án (Đề 3)
15 câu Trắc nghiệm Tin học 11 KNTT Tin học ứng dụng Bài 13: Cơ sở dữ liệu quan hệ có đáp án
Đề thi cuối học kì 1 Tin học 11 Kết nối trí thức có đáp án (Đề 1)
15 câu Trắc nghiệm Tin học 11 KNTT Tin học ứng dụng Bài 14: SQL – Ngôn ngữ truy vấn có cấu trúc có đáp án
15 câu Trắc nghiệm Tin học 11 Cánh diều Tin học ứng dụng Bài 1: Bài toán quản lý và cơ sở dữ liệu có đáp án
về câu hỏi!