Truyền vector vào hàm

Anh chị cho em hỏi, em muốn đưa vector a gồm 1 mảng các giá trị, và sắp xếp lại thì phải làm sao.
Đây là code của em, nhưng sau khi xuất trật tự nó vẫn giữ nguyên, anh chị giúp em với. Em cảm ơn.

void swap(int &a,int &b)
{
	int z = a;
	a = b;
	b = z;
}
void selectionSort(vector <int> &a)
{
	for(int i = 0 ; i < a.size()-1; i++)
	{
		int min = i;
		for(int j = i + 1 ; j < a.size(); j++)
			if(min > a.at(j)) min = a.at(j);
		swap(a.at(i),a.at(min));
	}
}

if (a.at(min) > ... chứ không phải if (min > a.at... nhé

1 Like

Đặt thêm cái minIdx nữa cho đỡ nhầm :slight_smile:

Thêm cái {} cho lệnh if nữa. Nếu không hàm swap sẽ được thực qua mỗi vòng lặp.

Vậy là đúng ý đồ rồi mà :slight_smile: swap đó phải nằm ngoài vòng lặp trong.

1 Like

Em phát hiện code e sai từ thuật toán a.at(min) = a.at(j) mới đúng

1 Like

Sửa vậy còn sai hơn :slight_smile:

Với ý đồ này thì bạn nên viết rõ tên biến là minIdx chứ không lại nhầm. min vẫn có thể giữ lại để so sánh, nhưng swap thì phải có chỉ số (idx).

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?