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 :sweat_smile:

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ì)

1 Like

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 :slight_smile:

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ỉ?), hay std::less(arr[minIndex], arr[i_current]) :smiley:

Thay std::less bằng tham số func thì h việc ta cần làm là tìm kiểu cho func để có prototype.

Prototype cho hàm sắp xếp của ta có dạng sort(int* a, int n, ??? func)

1 Like

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.

1 Like
debug hàm từng dòng sẽ hiểu :v
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?