01/10/2018, 01:17
Không hiểu đoạn code C++ nhỏ này. Mong mọi người giúp đỡ
Mọi người cho mình hỏi cái đoạn code này hoạt động như thế nào :
for (int i_current = i_start + 1; i_current < length; i_current++)
{
if (evensFirst(arr[minIndex], arr[i_current]))
{
minIndex = i_current;
}
}
sau một buổi ngồi nghiệm mình vẫn không hiểu nó hoạt động như thế nào
Bài liên quan
Cái này là sử dụng comparator (thực ra bài này chia đôi mảng in-place trước là được chứ làm chi cho cầu kì)
Bạn đẩy hết code lên chưa vậy? Nếu chưa thì hãy up hết lên. Hy vọng sẽ giúp đc bạn.
Code trích từ trong thread đã dẫn
Giờ bạn thớt hình dung cái đó ghi min thì code sẽ là
arr[minIndex] < arr[i_current]
(i j có sao đâu nhỉ?), haystd::less(arr[minIndex], arr[i_current])
Thay
std::less
bằng tham sốfunc
thì h việc ta cần làm là tìm kiểu chofunc
để có prototype.Prototype cho hàm sắp xếp của ta có dạng
sort(int* a, int n,
???func)
Cho i_current có giá trị ban đầu bằng start +1 và tăng từng khoảng 1 đơn vị nếu i_curent < length. Trong mỗi lần tăng mà giá trị hàm evensFirst với 2 tham số là arr[minIndex] và arr[i_current] bằng true thì set cho minIndex = i_current.