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

rogp10 viết 03:25 ngày 01/10/2018

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

vimanh viết 03:22 ngày 01/10/2018

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.

rogp10 viết 03:19 ngày 01/10/2018

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ỉ?), hay std::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 cho func để có prototype.

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

Văn Dương viết 03:30 ngày 01/10/2018

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.

Nguyen Kien viết 03:29 ngày 01/10/2018
debug hàm từng dòng sẽ hiểu :v
Bài liên quan
0