30/09/2018, 23:32
Hỏi về : Gộp 2 mảng có sắp xếp tăng dần thành 1 mảng sắp xếp tăng dần
Em đang làm cái hàm trộn 2 mảng có sắp tăng dần thành 1 mảng sắp xếp tăng dần. Nhưng mà lại không ra được cái giá trị của mảng. Lần nào xuất ra cũng thiếu 1 phần tử. Bác nào chỉ giúp e hàm em viết sai chỗ nào.
void GopHaiMangTangDan(int a[], int nA, int b[], int nB, int result[], int &nResult)
{
// dua a,b vào ket qua
nResult = 0; // Khoi tao ban dau bang khong nA= 4 nB = 5 iA=4 iB=4
int iA = 0;
int iB = 0;
while ((iA < nA) && (iB < nB))
{
if (a[iA] > b[iB])
{
result[nResult] = b[iB];
iB++;
}
else
{
result[nResult] = a[iA];
iA++;
}
nResult++;
}
}
Bài liên quan
Bạn dùng
while ((iA < nA) && (iB < nB))
nên khi một trong 2 mảng chạy đến phần tử cuối cùng thì nó sẽ kết thúc, do đó những phần tử còn lại của mảng kia sẽ không được xử lý.Có nhiều cách giải quyết, một trong số đó là thêm 2 câu lệnh
if
và sau vòngwhile
:Không phải điều kiện và thì khi cả 2 vượt quá thì mới dừng vòng while chứ ạ
vòng
while
dừng lại khi một trong hai mảng A, B hết. Như thế một trong 2 mảng còn lại vẫn còn phần tử. lúc đó cần copy mảng nào còn lại cho vàoresult