Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/98: Рейтинг темы: голосов - 98, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 28.03.2010
Сообщений: 29
1

Сортировка массива чисел по возрастанию

12.04.2010, 14:52. Показов 19035. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан. Следующий код. Но его надо изменить так, чтобы он сравнивал не просто все подряд числа, а отсортировывал только то, что осталось от массива чисел. Пример на скрине.
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
Private Sub Command1_Click()
Label1.Caption = " "
Label2.Caption = Label1.Caption
Label1.Font.Size = 18
Label2.Font.Size = Label1.Font.Size
Dim massive(9) As Long, i As Integer, J As Integer, N As Integer, Tmp As Double
Randomize (Time)
For i = 0 To 9
massive(i) = Rnd() * 10
Next i
For i = 0 To 9
Label1.Caption = Label1.Caption & massive(i) & Space(3)
Next i
 
 
N = 9
For i = 0 To N - 1
For J = i To N
  If massive(i) < massive(J) Then
               Tmp = massive(J)
               massive(J) = massive(i)
               massive(i) = Tmp
            End If
        Next J
Label2.Caption = Label2.Caption & massive(i) & Space(3)
Next i
Label2.Caption = Label2.Caption & massive(N)
End Sub
Миниатюры
Сортировка массива чисел по возрастанию  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2010, 14:52
Ответы с готовыми решениями:

Сортировка массива чисел по возрастанию
Здравствуйте, форумчане! Я не учусь на программиста и поэтому я здесь. Нужно, чтобы в лэйбл1...

Сортировка одномерного массива по возрастанию
помогите написать программку для сортировки одномерного массива по возрастанию

Сортировка массива по возрастанию методом вставки
Здравствуйте такая ситуация, мне нужна помощь в небольшом пояснении метода сортировки вставкой Вот...

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

20
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
12.04.2010, 15:14 2
На сколько я понял,Вам нужен алгоритм сортировки "выбором элемента".
Тогда код сортировки такой:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim r As Integer, k As Integer
Dim i, j
For i = 2 To N
For j = 1 To i - 1
If massive(j) > massive(i) Then
r = massive(i)
For k = i To j + 1 Step -1
massive(k) = massive(k - 1)
Next k
massive(j) = r
End If
Next j
Next i
0
2 / 2 / 0
Регистрация: 28.03.2010
Сообщений: 29
12.04.2010, 15:20  [ТС] 3
Нет, Ваш код показывает самое большое число в лэйбл2, а нужно, чтобы получалось так же, как в приведенном коде, только запись другая.
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
12.04.2010, 15:49 4
Вы издеваетесь?) Как самое большое?)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim r As Integer, k As Integer
Dim i, j
For i = 2 To N
For j = 1 To i - 1
If massive(j) > massive(i) Then
r = massive(i)
For k = i To j + 1 Step -1
massive(k) = massive(k - 1)
Next k
massive(j) = r
End If
Next j
Next i
'Допишите ещё 1 цикл
For i=1 to N
Label2=Label2 & massive(i) & Space(3)
next i
У меня он нормально отсортировал массив
0
2 / 2 / 0
Регистрация: 28.03.2010
Сообщений: 29
12.04.2010, 15:57  [ТС] 5
Спасибо большое! Был ты рядом, денег кинул на телефон))
А можете нарисовать на бумажке блок-схему к этой части кода?
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
12.04.2010, 16:20 6
Можете на Web-Money кинуть
Блок-схема...ммм..ну думаю как-то так:
Миниатюры
Сортировка массива чисел по возрастанию  
1
2 / 2 / 0
Регистрация: 28.03.2010
Сообщений: 29
12.04.2010, 16:23  [ТС] 7
Номер в лс, попрошу друга закинуть.
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 10
24.06.2014, 21:13 8
Добрый день . Помогите пожалуйста нужен код в бейсике. Для сортировки массива (метод пузырька)на большое число
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,639
Записей в блоге: 13
24.06.2014, 21:23 9
Что значит "сортировка на большое число"?
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 10
24.06.2014, 21:45 10
YuraAAA, добрый день помогите

Добавлено через 1 минуту
сказали что бы массив 2.5 милиона отсортировал за 2.5 минуты

Добавлено через 1 минуту
може ли помоч

Добавлено через 59 секунд
могу скинуть код какойя написал

Добавлено через 6 минут
Dim m(10) что бы заместо 10 бало 2.5 милиона

Добавлено через 10 минут
поможите
0
Заблокирован
24.06.2014, 23:18 11
https://www.cyberforum.ru/post6285971.html

Добавлено через 3 минуты
Ограничений по величине массива нет, а алгоритм быстрой сортировки,
два миллиона чисел отсортирует менее чем за секунду
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 10
24.06.2014, 23:22 12
А можно код
0
Заблокирован
24.06.2014, 23:22 13
Цитата Сообщение от goga Посмотреть сообщение
А можно код
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
37
38
39
40
41
42
43
Option Explicit
'
'   © Антихакер32™
'
'1. Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки.
'2. Отсортировать массив по возрастанию.
'3. Организовать поиск в отсортированном массиве.
Dim j$()
 
Private Sub Form_Activate()
    Dim s$, f&, u&
    'Для примера берём какой-либо текст
    s = "Дан ряд символов. Создать одномерный массив, элементами которого есть слова данной строки."
    j = Split(LCase(s)): u = UBound(j) 'Разбиваем на слова
    qSort 0, u: Cls 'Быстро сотрируем и выводим отсортированный список
    For f = 0 To u: Print f & " " & j(f): Next
    Print
    Print "Ищем слово одномерный"
    f = Find("одномерный")
    Print "Находим " & f & " позицию в списке = [" & j(f) & "]"
End Sub
Public Function Find&(Elm$)
    Dim max&, f&
    max = UBound(j)
    For f = 0 To Log(max - 1) / Log(2) + 1
        Find = (Find + max) \ 2
        If Elm > j(Find) Then
            Find = Find + 1
        ElseIf Elm < j(Find) Then max = Find - 1
        Else: Exit Function
        End If
    Next
    Find = -1
End Function
Private Sub qSort(ByVal low As Long, ByVal high As Long)
    Dim I As Long, L As Long, M As String, wsp As String
    I = low: L = high: M = j((I + L) \ 2)
    Do Until I > L: Do While j(I) < M: I = I + 1: Loop: Do While j(L) > M: L = L - 1: Loop
        If (I <= L) Then wsp = j(I): j(I) = j(L): j(L) = wsp: I = I + 1: L = L - 1
    Loop
    If low < L Then qSort low, L
    If I < high Then qSort I, high
End Sub
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 10
24.06.2014, 23:40 14
Только код и скин формы

Добавлено через 11 минут
сколь по цене

Добавлено через 1 минуту
забыл с генератором случайных чисел

Добавлено через 3 минуты
на коде ни че не понял . извини если что не так просто я в информатике 0
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 10
24.06.2014, 23:59 15
блин я тут недавно не знаю как личным сообщение отправлять
0
Заблокирован
25.06.2014, 00:28 16
вот ссыль: https://www.cyberforum.ru/priv... m&u=445967
и еще ссыль которая у меня в подписи..
0
0 / 0 / 0
Регистрация: 24.06.2014
Сообщений: 10
25.06.2014, 00:38 17
Не могу написать. Вобщем надо генератор случайных чисел потом сортировку код и скины формы со всеми кнопками

Добавлено через 3 минуты
Мне надо это завтра к 9 утра
0
Заблокирован
25.06.2014, 00:58 18
ищи на форуме, здесь много примеров есть..
Visual Basic
1
2
3
4
dim j$(): s$
randomize timer
for f=0 to 2500000: s=s & str(fix (rnd*2^30)):next
j=split(mid$(s,2)) 'Получаем массив величиной 2500000 с рассбросом чисел от 0 до 1073741824
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,639
Записей в блоге: 13
25.06.2014, 11:14 19
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Сортировка подсчетом. Работает значительно быстрее.

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
Sub Task()
Dim X(1 To 2500000) As Integer
    Randomize
    For i& = 1 To 2500000
        X(i&) = Rnd * 300
    Next i&
    For i& = 20000 To 20400
        Debug.Print X(i&)
    Next i&
    SortCount X
    For i& = 20000 To 20400
        Debug.Print X(i&)
    Next i&
End Sub
 
Sub SortCount(X() As Integer)
Dim Y(0 To 300) As Long
    For i& = 1 To UBound(X, 1)
        j& = X(i&)
        Y(j&) = Y(j&) + 1
    Next i&
    k& = 1
    For j& = 0 To 300
        If Y(j&) > 0 Then
           For i& = 1 To Y(j&)
               X(k&) = j&
               k& = k& + 1
           Next i&
        End If
    Next j&
End Sub
2
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
25.06.2014, 11:16 20
goga, https://www.cyberforum.ru/abou... 82784.html.
В зависимости от количества сообщений, пользователи форума имеют следующие права:
До 5 сообщений и менее 2 дней на форуме.
...
Запрещено:
...
отправка личных сообщений,
...
0
25.06.2014, 11:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2014, 11:16
Помогаю со студенческими работами здесь

Сортировка массива целых чисел по возрастанию
Отсортировать заданный массив целых чисел А(I) в порядке возрастания их значений. I=1,2,...,10. ...

Сортировка по возрастанию (убыванию) массива из N вещественных чисел
Описать программу SortInc (A,N) (SortDec (A,N)), выполняющую сортировку по возрастанию...

Сортировка массива строк по алфавиту и возрастанию чисел
Здравствуйте. Есть строки в массиве: L_1_Dune-2-DOS.ogg L_2_Dune-2-DOS.ogg L_3_Dune-2-DOS.ogg...

Сортировка одномерного массива целых чисел по возрастанию методом быстрой сортировки
Написать программу для сортировки одномерного массива целых чисел по возрастанию методом быстрой...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru