Сортировка - VB (170523)
Формулировка задачи:
Помогите пожалуйста решить задание
Пусть даны две неубывающие последовательности действительных чисел a1 ≤ a2 ≤ ... ≤ аn и b1 ≤ b2 ≤ ... ≤ bm. Требуется указать те места, на которые нужно вставлять элементы последовательности b1, b2, ..., bm в первую последовательность так, чтобы новая последовательность оставалась возрастающей.
Решение задачи: «Сортировка»
textual
Листинг программы
Function merge(A() As Integer, B() As Integer) As Integer() Dim R() As Integer ' здесь будет результат 'имя, оканчивающееся на %, означает, что соотв. переменная 'имеет тип integer na% = UBound(A, 1) ' размер 1-го массива nb% = UBound(B, 1) ' размер 2-го массива ReDim R(1 To na% + nb%) As Integer ' выделяем память под рез. ia% = 1 ' индекс первого сливаемого ib% = 1 ' индекс второго сливаемого ir% = 1 ' индекс результат Do If ia% > na% And ib% > nb% Then Exit Do ' если оба массива исчерпаны - выход If ia% > na% Then ' если исчерпан первый, а второй - еще нет For j% = ib% To nb% ' сброс остатка второго в хвост результата R(ir%) = B(j%) ir% = ir% + 1 Next j% Exit Do ' выход из цикла End If If ib% > nb% Then ' если исчерпан второй, а первый - еще нет For j% = ia% To na% ' сброс остатка первого в хвост результата R(ir%) = A(j%) ir% = ir% + 1 Next j% Exit Do ' выход из цикла End If If A(ia%) > B(ib%) Then ' если оч. элемент первого больше эл-та второго R(ir%) = B(ib%) ' сбрасываем второй; первый не трогаем ib% = ib% + 1 ir% = ir% + 1 ElseIf A(ia%) = B(ib%) Then 'если элементы равны - сбрасываем оба R(ir%) = A(ia%) ia% = ia% + 1 ir% = ir% + 1 R(ir%) = B(ib%) ir% = ir% + 1 ib% = ib% + 1 Else ' если оч. элемент второго больше эл-та первого R(ir%) = A(ia%) ' сбрасываем первый; второй не трогаем ia% = ia% + 1 ir% = ir% + 1 End If Loop merge = R ' возврат массива End Function Sub TestM() Dim X(1 To 3) As Integer Dim Y(1 To 5) As Integer Dim Z() As Integer X(1) = 0 X(2) = 10 X(3) = 60 Y(1) = 1 Y(2) = 2 Y(3) = 33 Y(4) = 44 Y(5) = 55 Z = merge(X, Y) For i% = 1 To 8 Debug.Print Z(i%) Next i% End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д