Chào Hacker_mubaohiem. Bài toán của mình là rõ ràng rùi. Tìm giá trị lớn thứ k của mảng.
code tren mình đã kiểm tra rùi và nó chạy đúng. Tuy nhiên bạn sửa lại chỗ
Code:
if (tt<=l) bạn sửa thành if(tt<l)
vậy là bạn chạy sẽ thấy kết quả.
Cách làm của mình rất hay vì mình học được. Tuy nhiên yêu cầu là viết nó thành đệ quy chứ không viết như thế.
Nếu bạn nhìn vào bài thì bạn biết ý tưởng rùi chứ. Còn không thì mình nói thế này:
Cho một mảng A nào đó có n phần tử. Nhập k là là số lớn thứ mấy cần tìm. Ví dụ A={2,4,1,6,8,5,9,2,4,2,8,6} và k là số lớn thứ 5 thì kết quả là: 4 vì 4 là giá trị lớn thứ 5.
Thuật toán của mình tìm Median là để tách mảng ra làm 3 mảng nhỏ.
Một mảng sl[l] sẽ chứa giá trị <Median và sẽ có chiều dài là l
Một mảng sv[v] chứa gia trị =Median và có chiều dài là v
Mảng còn lại sr[r] chứa giá trị lớn hơn Median và sẽ có chiều dài là r.
Nếu k< l thì mình chỉ cần tìm ở mảng sl[l]
Nếu k>l và k<l+v thì chính là phần tử của sv[v]
Nếu k>l+v thì tìm ở vị trí thứ k=k-l-v-1.
Đó là thuật toán hoàn toàn chính xác 100% và mình muốn chuyển wa đệ qui. Mình dốt đệ qui wa.