При пузырьковой сортировке массива, у которого только последний элемент, возможно, находится не на своем месте, достаточно только внутреннего цикла (внешний не нужен), только выполнять его надо от больших значений индекса к меньшим.
Ну и наконец, если уж Вы сортируете произвольный массив, то имеет смысл выходить из внешнего цикла, если во внутреннем не было обнаружено ни одной инверсии.
Я цитирую этот участок текста, так как то, что у Вас написано до - это нужно, но не у нас.... у нас вообще информатика тугая. Делаем программы, которые только в рамках задания могу работать.
А теперь о самом деле. Добавленный элемент в массиве -
всегда "у нас" будет в конце, поэтому я сделал так:
Код:
'процедура сортировки массива по возратстанию
'(учитывая, что весь массив, кроме последнего элемента, уже отсортирован)
Sub sort(ByRef mis() As Single, ByVal n As Integer)
Dim Tmp As Single
Dim j As Integer
For j = n - 1 To 1 Step -1
If mis(j) < mis(j - 1) Then
Tmp = mis(j)
mis(j) = mis(j - 1)
mis(j - 1) = Tmp
Else
Exit For
End If
Next
End Sub
Ну это ещё не конец) Я решил закончить эту лабу после:
При удалении элемента нет никакой необходимости строить новый массив: вполне можно можно просто сдвинуть влево все элементы исходного массива, начиная с индекса k+1.
Я сделал вот так:
Код:
'процедура выполняющая удаление элемента с индекосм "k"
Sub delka(ByRef lom() As Single, ByVal n As Integer, ByVal k As Integer)
Dim i As Integer
For i = k To n - 2
lom(i) = lom(i + 1)
Next
End Sub
Проверьте пожалуйста эти 2 мои процедуры