Code lỗi về Insertion Sort

Em đang làm bài Insertion Sort, mỗi bước insert thì hãy in ra mảng, đây là code:

void Insert(vector<int> arr, int rightIndex, int key)
{
    int i;

    for(i = rightIndex; i >= 0 && arr[i] > key; i--){
        arr[i + 1] = arr[i];
    }
    arr[i+1] = key;
}

void InsertionSort(vector<int> arr)
{
    for(int i = 1; i < arr.size(); i++){
        Insert(arr, i - 1, arr[i]);
        Output(arr);
    }
}

Input
6
1 4 3 5 6 2

Output mong muốn
1 4 3 5 6 2
1 3 4 5 6 2
1 3 4 5 6 2
1 3 4 5 6 2
1 2 3 4 5 6

Output thực tế
1 4 3 5 6 2
1 4 3 5 6 2
1 4 3 5 6 2
1 4 3 5 6 2
1 4 3 5 6 2

Em mới biết cách dùng sơ sơ vector, nhưng chưa biết rõ
Em thử demo = C# với thuật toán y như thế, chỉ khác là dùng mảng, và thành công.
Vì vậy em nghĩ code em sai có thể là do em dùng vector không đúng.
Mà khổ là em lại không biết debug vector :’(

Mọi người xem giúp em với
Cám ơn ạ

1 Like
void Insert(vector<int>& arr, int rightIndex, int key)

Là vector thì cũng cần truyền kiểu tham chiếu

1 Like

cho i chạy từ 0 thử xem sao (nhầm)

phải có tham chiếu
1 Like

Bạn thử như bạn này xem sao, truyền tham chiếu thì mới in ra mảng thay đổi giá trị được. Truyền tham số thì ra khỏi hàm vector đó vẫn không thay đổi giá trị đâu.

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