30/09/2018, 17:06

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 ạ

... viết 19:14 ngày 30/09/2018
void Insert(vector<int>& arr, int rightIndex, int key)

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

X viết 19:15 ngày 30/09/2018

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

phải có tham chiếu
Khải Phan viết 19:15 ngày 30/09/2018

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.

Bài liên quan
0