Dựa trên kết quả hiện tại mình chỉ đoán là vòng lặp có khả năng bị vượt quá vị trí mảng.
Mảng arry có 10 số từ 0 đến 9. Kết quả thì đến 8 và lại thừa 1 giá trị âm ko có.
=> Xét lại code vòng lặp:
Vòng lặp chạy số lần sort (1): for (int16_t sort(1); sort <= 10; sort++)
Vòng lặp cho việc sort (2) for (int16_t number(0); number <= n_max - 1; number++)
Tại vòng (1), việc sort 10 lần mặc dù chỉ cần 9 lần dù ko gây lỗi gì nhưng hao tài nguyên về sau.
Tại vòng (2), khả năng do hiểu sai bản chất của công thức thuật toán mảng hoặc chưa hiểu rõ về vị trí giá trị mạng, bạn cho chạy từ 0 đến = n_max-1 dẫn đến lỗi chạy quá giá trị vị trí.
Ví dụ mảng có 10 giá trị nhưng sẽ chạy từ vị trí số 1 tại a[0] đến vị trị cuối cùng là 10 tại a[9] (10-1=9).
Do vậy vòng (2), đáng lẽ chỉ đến a[8] với number < n_max-1, bạn khiến nó chạy tới array_6[9] (vị trị cuối cùng có khởi tạo giá trị) dẫn đến
if (array_6[number] > array_6[number + 1]) { x = array_6[number]; array_6[number] = array_6[number + 1]; array_6[number + 1] = x; }
chạy đến array[10] (9+1) nơi ko khởi tạo giá trị. Kèm theo chắc có liên quan gì đến thư viện pch.h của bạn nữa nên nó mới ra 1 giá trị ngoài luồng ko mong muốn (lúc đem code bạn lên chạy trên máy mình thì báo lỗi thiếu pch.h).
=> Mảng từ 10 giá trị lên 11 giá trị.
=> Lúc xuất cũng chỉ xuất đến 10 kết thúc tại array_6[9]. Giá trị 9 bị đẩy sang array_6[10] nên ko có xuất hiện.