Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Метод пузырьковой сортировки (одномерный массив)
 
Уважаемые посетители форума.
Не могу понять часть следующего макроса. То что выделено жирным шрифтом. Пытаюсь понять: что происходит с массивом, начиная с Temp = List(j). прим. {5,2,4,1,3}.
Код
Sub BubbleSort(List() As String)
‘ Sorts the List array in ascending order
 Dim First As Long, Last As Long
 Dim i As Long, j As Long
 Dim Temp As String
 First = LBound(List)
 Last = UBound(List)
 For i = First To Last - 1
 For j = i + 1 To Last
 If List(i) > List(j) Then
 [B]Temp = List(j)
 List(j) = List(i)
 List(i) = Temp[/B]
 End If
 Next j
 Next i
End Sub
 
Код
Temp = List(j) 'заносит значение массива List(j) в переменную Temp
List(j) = List(i) 'присваивает значению массива List(j) значение List(i)
List(i) = Temp 'присваивает значению массива List(i) значение переменной Temp


Все это необходимо для того, чтобы поменять местами значения в массиве. Без переменной в данном случае это сделать не получится. В этом весь смысл сортировки.

If List(i) > List(j) Then означает:
ЕСЛИ значение List(i) больше значения List(j) ТО
вместо List(j) пишем значение List(j), а вместо List(i) значение List(i). Т.е. меняем местами.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
djumadinov, оформляйте код тегом.
 
Если разобрать пример {5,2,4,1,3}. То, первым шагом будет сравнение {5,2}. Так как, 5>2,   вид массива после этого шага будет таковым {2;5;4;1;3}. Верно?

Если честно, мне не очень ясно для чего нужен Temp?
 
А как иначе поменять местами значения массива? только через доп. переменную.
 
Всем спасибо, понял.
Страницы: 1
Читают тему (гостей: 1)