сортировка чисел

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

сортировка чисел

Сообщение v-adix » 03.10.2003 (Пт) 12:26

есть массив, в нём числа. как отсортировать эти числа (записав отсортированное в другой массив) во возрастанию и по убыванию?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 03.10.2003 (Пт) 12:58

Переслать в B копию А и отсортировать , ну вот, например, по убыванию и возрастанию:
'переслать
for i=1 to n
b(i) =a(i)
next i

for i=1 to n
for j=i+1 to n
if b(I)<b(j) then
obmen =b(i)
b(i)=b(j)
b(j)=obmen
end if
next j
next i

for i=1 to n
for j=i+1 to n
if b(I)>b(j) then
obmen =b(i)
b(i)=b(j)
b(j)=obmen
end if
next j
next i

n - число ячеек ячеек
Последний раз редактировалось Vitaly1 03.10.2003 (Пт) 13:48, всего редактировалось 2 раз(а).

Ilya Vasilyev
Постоялец
Постоялец
 
Сообщения: 820
Зарегистрирован: 06.08.2002 (Вт) 5:36
Откуда: Russia, Omsk

Сообщение Ilya Vasilyev » 03.10.2003 (Пт) 13:12

цикл по i должен быть до n-1 :)
Изображение
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 03.10.2003 (Пт) 13:28

цикл по i должен быть до n-1


Совсем не обязательно!

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 03.10.2003 (Пт) 14:27

посмотрите на пример кода:

Private Sub Form_Load()
Dim b() As Integer
For i = 1 To GetRandomNumber(50)
ReDim Preserve b(i)
b(i) = GetRandomNumber(999)
Next i
Dim obmen As Integer
For i = 1 To UBound(b)
For j = i + 1 To UBound(b)
If b(i) < b(j) Then
obmen = b(i)
b(i) = b(j)
b(j) = obmen
List1.AddItem obmen
End If
Next j
Next i
End Sub
Public Function GetRandomNumber(Ton As Long) As Long
Dim RndValue
Randomize
RndValue = Int((Ton + 1) * Rnd)
GetRandomNumber = RndValue
End Function

я правильно сделал? чёто не получается... цифры не по возрастанию идут...

Ilya Vasilyev
Постоялец
Постоялец
 
Сообщения: 820
Зарегистрирован: 06.08.2002 (Вт) 5:36
Откуда: Russia, Omsk

Сообщение Ilya Vasilyev » 03.10.2003 (Пт) 14:33

V-Adix
If b(i) > b(j) Then

Vitaly 1
Совсем не обязательно!
Ошибки конечно не будет, но с точки зрения оптимизации это некорректно... зачем сравнивать друг с другом одинаковые индексы - лишний ресурс :)
Изображение
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 03.10.2003 (Пт) 15:06

я правильно сделал? чёто не получается... цифры не по возрастанию идут...


Конечно, надо знак сравнения в операторе if поменять на обратный :)

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 03.10.2003 (Пт) 15:40

попробуй код который я выложил. он не работает.
цифры идут по возрастанию от 1 до 999, потом опять идут по возрастанию от 1 до 999 и т.д. до конца.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 03.10.2003 (Пт) 15:51

Елки, палки, нельзя добавлять в список, тогда, когда переставляешь данные, переставь List1.AddItem :

'это по возрастанию
For i = 1 To UBound(b)
For j = i + 1 To UBound(b)
If b(i) > b(j) Then
obmen = b(i)
b(i) = b(j)
b(j) = obmen
End If
Next j
List1.AddItem b(i)
Next i
End Sub

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 03.10.2003 (Пт) 16:05

всё! спачибо огромное. всё получилось.
продолжу свой проект...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 5

    TopList