Объединить массивы так, чтобы результирующий массив остался упорядоченным по убыванию - VB
Формулировка задачи:
Даны три целочисленных массива A, B и C размера NA, NB, NC соответственно, элементы которых упорядочены по убыванию. Объединить эти массивы так, чтобы результирующий целочисленный массив D (размера NA + NB + NC) остался упорядоченным по убыванию.
Решение задачи: «Объединить массивы так, чтобы результирующий массив остался упорядоченным по убыванию»
textual
Листинг программы
- Sub Merge2(A() As Integer, B() As Integer, R() As Integer)
- ia% = LBound(A, 1)
- ib% = LBound(B, 1)
- ir% = 0
- Do
- ca% = A(ia%)
- cb% = B(ib%)
- If ca% >= cb% Then
- ir% = ir% + 1
- R(ir%) = ca%
- ia% = ia% + 1
- Else
- ir% = ir% + 1
- R(ir%) = cb%
- ib% = ib% + 1
- End If
- If (ia% > UBound(A, 1)) Then
- For i% = ib% To UBound(B, 1)
- ir% = ir% + 1
- R(ir%) = B(i%)
- Next i%
- Exit Do
- End If
- If (ib% > UBound(B, 1)) Then
- For i% = ia% To UBound(A, 1)
- ir% = ir% + 1
- R(ir%) = A(i%)
- Next i%
- Exit Do
- End If
- Loop
- End Sub
- Sub Merge3(A() As Integer, B() As Integer, C() As Integer, R() As Integer)
- Dim Tmp() As Integer
- n1% = UBound(A, 1) - LBound(A, 1) + 1
- n2% = UBound(B, 1) - LBound(B, 1) + 1
- n3% = n1% + n2%
- ReDim Tmp(1 To n3%) As Integer
- Merge2 A, B, Tmp
- Merge2 Tmp, C, R
- End Sub
- Sub Task()
- Dim A(1 To 10) As Integer
- Dim B(1 To 4) As Integer
- Dim C(1 To 5) As Integer
- Dim R(1 To 19) As Integer
- A(1) = 10
- A(2) = 8
- A(3) = 7
- A(4) = 6
- A(5) = 5
- A(6) = 4
- A(7) = 4
- A(8) = 3
- A(9) = 3
- A(10) = 0
- B(1) = 10
- B(2) = 8
- B(3) = 7
- B(4) = 6
- C(1) = -9
- C(2) = -11
- C(3) = -12
- C(4) = -54
- C(5) = -154
- Merge3 A, B, C, R
- For i% = 1 To 19
- Debug.Print R(i%)
- Next i%
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д