Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
1

Метод сортировки пузырьком

20.05.2018, 19:03. Просмотров 337. Ответов 13
Метки нет (Все метки)

Здравствуйте. Такая ситуация, мне нужно создать программу для сортировки массива методом пузырька, с помощью генератора случайных чисел. Я сделал генератор случайных чисел одной кнопкой и вывожу массив в текст. А сортировку сделал другой кнопкой. И мне нужно сделать так чтобы когда я сгенерировал массив и нажав на кнопку сортировки мне под этим массивом в этом же тексте выводился уже отсортированный массив
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option Explicit
Dim n, min, max As Integer
Dim a() As Long
Dim r As Integer
 
Private Sub Command1_Click()
Dim i As Byte
Text4.Text = ""
n = Val(Text1.Text)
max = Val(Text2.Text)
min = Val(Text3.Text)
For i = 1 To n
ReDim a(i)
a(i) = Int((max - min) * Rnd() + min)
Text4.Text = Text4.Text + Str(a(i)) + vbTab
Next i
End Sub
 
Private Sub Command2_Click()
Dim k As Integer
 
Dim j As Integer
Dim y As Integer
Text4.Text = vbCrLf
For k = 1 To n
For y = 1 To n - 1
If a(i + 1) < a(i) Then
y = a(i + 1)
a(i + 1) = a(i)
a(i) = y
End If
Next y
Next k
For j = 1 To n
Next j
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2018, 19:03
Ответы с готовыми решениями:

Есть такой вариант сортировки "пузырьком" ?
Всегда сортировал &quot;пузырьком&quot; по примеру от БурундукЪ из верхней части раздела....

Подскажите метод сортировки
Есть база с игроками, число стабильно 96000 игроков(96 тысяч) т.к. массив...

Самый быстрый метод сортировки
Интересует самый быстрый метод сортировки, ссылки, примеры, что угодно

Метод пузырьковой сортировки: верен ли приложенный код
Дано задание сортировка методом пузырька. Вот программа подскажите правильно...

Сортировка пузырьком
Нужно отсортировать каждые третьи элементы столбцов по возрастанию, в чем...

13
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
21.05.2018, 17:12 2
добавьте на форму Текстбокс Text5 и с 34-й строки поставьте следующий код:
Visual Basic
1
2
3
For j = 1 To n
  Text5.Text  = Text5.Text & a(j) & vbTab
Next j
кстати, у вас в процедуре Command2_Click в цикле сортировки используется неопределенная переменная i
1
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
21.05.2018, 21:27  [ТС] 3
Спасибо большое
А можете еще подсказать пожалуйста как сделать переменную i в процедуре commond2_ определенной,а то я плохо в этом понимаю
0
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
22.05.2018, 11:22 4
Diman1999, перепишите строки 25-33 таким образом:
Visual Basic
1
2
3
4
5
6
7
8
9
For k = 1 To n
    For j = 1 To n-1
        If a(j + 1) < a(j) Then
            y = a(j)
            a(j) = a(j + 1)
            a(j + 1) = y
        End If
    Next j
Next k
1
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
22.05.2018, 18:49  [ТС] 5
Можете ли еще пожалуйста помочь? Вот с эти программным кодом у меня не получается сортировка массива. У меня выводится только последнее значение массива а все остальные 0

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Option Explicit
Dim x, y, n, min, max, i, k, j As Integer
Dim a() As Long
 
Private Sub Command1_Click()
Text4.Text = vbCrLf
n = Val(Text1.Text)
max = Val(Text2.Text)
min = Val(Text3.Text)
For i = 1 To n
ReDim a(i)
a(i) = Int((max - min) * Rnd() + min)
Text4.Text = Text4.Text + Str(a(i)) + vbTab
Next i
End Sub
Private Sub Command2_Click()
Dim y, k As Integer
Text5.Text = vbCrLf
For k = 1 To n
For j = 1 To n - 1
If a(j + 1) < a(j) Then
y = a(j)
a(j) = a(j + 1)
a(j + 1) = y
End If
Next j
Next k
For i = 1 To n
Text5.Text = Text5.Text & (a(i)) & vbTab
Next i
End Sub
0
Миниатюры
Метод сортировки пузырьком  
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
22.05.2018, 22:30 6
Цитата Сообщение от Diman1999 Посмотреть сообщение
For i = 1 To n
ReDim a(i)
a(i) = Int((max - min) * Rnd() + min)
вместо этих строк напишите:
Visual Basic
1
2
3
Redim a(n)
For i = 1 To n
a(i) = Int((max - min) * Rnd() + min)
Redim - переопределяет массив, т.е. вы каждый раз в цикле его переопределяли заново, обнуляя его содержимое
0
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
24.05.2018, 20:03  [ТС] 7
все получилось
Спасибо вам огромное

Добавлено через 21 час 17 минут
Можете еще пожалуйста в последнем помочь
надо написать код программный для ввода массива с клавиатуры
0
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
25.05.2018, 16:25 8
Visual Basic
1
2
3
For i = 1 To n
  a(i) = InputBox("Введите " & i & "-й элемент массива")
Next
0
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
29.05.2018, 15:44  [ТС] 9
Спасибо огромное
А ещё тогда такой вопрос. А что если у нас сортировка массива прошла за один прогон и дальнейший прогон бессмыслен, с помощью какой командной строки можно выйти досрочно из цикла?
0
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
31.05.2018, 17:52 10
можно выйти либо на метку Goto , либо с помощью Exit For
0
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
03.06.2018, 00:52  [ТС] 11
будет ли так правильно?
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
For k=1 To n
For j=1 To n-1
If a(j+1) <a(j) Then
y=a(j)
a(j)=a(j+1)
a(j+1)=y
End If
Next j
If a(1) =0 Then
m=k
Exit For
Next k
Добавлено через 1 час 24 минуты
или так правильнее?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Command2_Click()
For k = 1 To n
For j = 1 To n - 1
If a(j + 1) < a(j) Then
y = a(j)
a(j) = a(j + 1)
a(j + 1) = y
End If
If j < 1 Then Exit For
Next j
Next k
Text5.Text = vbCrLf
For i = 1 To n
Text5.Text = Text5.Text + Str(a(i))
Next i
End Sub
0
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
04.06.2018, 23:20 12
в первом случае не хватает End If
во втором случае j никогда не будет < 1 потому, что это управляющая циклом переменная и она увеличивается от 1 до n-1.
0
Diman1999
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
07.06.2018, 19:59  [ТС] 13
То есть если я запишу как в первом случае, только добавив End If, то у меня будет осуществляться досрочный выход из цикла?
0
_shark
153 / 157 / 25
Регистрация: 11.10.2016
Сообщений: 504
08.06.2018, 10:15 14
думаю, что вы уже попробовали и сами убедились в этом
0
08.06.2018, 10:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2018, 10:15

Как найти форму, к которой применить метод метод WindowState=2 ?
При закрытии одной из формы необходимо все дочерние окна максимизировать. Для...

Метод сортировки пузырьком C++
Мне нужно составить функцию сортировки массива в матрице. Я написал, все...

Метод сортировки пузырьком, исправить код
Метод сортировки пузырьком. Когда ввожу числа, то ссылается на эту строку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru