01/10/2018, 17:21
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));
}
}
Bài liên quan





if (a.at(min) > ...chứ không phảiif (min > a.at...nhéĐặt thêm cái
minIdxnữa cho đỡ nhầmThê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à swap đó phải nằm ngoài vòng lặp trong.
Em phát hiện code e sai từ thuật toán a.at(min) = a.at(j) mới đúng
Sửa vậy còn sai hơn
Với ý đồ này thì bạn nên viết rõ tên biến là
minIdxchứ không lại nhầm.minvẫn có thể giữ lại để so sánh, nhưng swap thì phải có chỉ số (idx).