Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12

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

09.06.2018, 12:24. Показов 2188. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте такая ситуация, мне нужна помощь в небольшом пояснении метода сортировки вставкой
Вот допустим я сгенерировал исходный массив с помощью генератора случайных чисел
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Command1_Click()
Text4.Text = vbCrLf
n = Val(Text1.Text)
max = Val(Text2.Text)
min = Val(Text3.Text)
ReDim a(n)
For i = 1 To n
Randomize
a(i) = Int((max - min) * Rnd() + min)
Text4.Text = Text4.Text + Str(a(i))
Next i
End Sub
Далее мне нужно отсортировать этот исходный массив по возрастанию методом вставки
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Text5.Text = vbCrLf
For i = 1 To n
y = a(i)
j = i - 1
Do While (a(j) > y)
a(j + 1) = a(j)
j = j - 1
If j < 1 Then Exit Do
Loop
a(j + 1) = y
Next i
For k = 1 To n
Text5.Text = Text5.Text + Str(a(k))
Next k
End Sub
Массив отсортирован, все хорошо, только мне не понятны вот эти строки программного кода :j = j - 1
If j < 1 Then Exit Do
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2018, 12:24
Ответы с готовыми решениями:

Сортировка массива по возрастанию методом вставки
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int i, j; int* array; int main(void) { printf(&quot;Введіть довжину масиву: &quot;); ...

Сортировка массива по возрастанию методом "вставки с бинарным поиском места вставки"
Задан массив вещественных чисел x0,x1,...,xn-1. Произвести сортировку массива по возрастанию методом «вставки с бинарным поиском места...

Сортировка массива по возрастанию неоптимизированным алгоритмом вставки
Я решаю задачу. Прошу помочь. Что не так в моём коде ? Условие задачи: Дается массив целых чисел. Отсортируйте массив по...

5
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
09.06.2018, 17:00
Do-Loop - это одна из разновидностей цикла в VB. Exit Do здесь реализует выход из цикла, как только уменьшающаяся (j=j-1) переменная j станет меньше нуля.
0
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
09.06.2018, 17:58  [ТС]
Еще тогда кое что не понятно
У меня исходный массив формируется с 1 и заканчивается n-ым количеством
Затем в сортировке у меня идет сначала цикл со счетчиком который также начинается с 1 и заканчивается n-ым количеством элементов, потом я определяю массив а(i) от этого счетчика как переменную y, а затем определяю переменную j как i-1. И вот что я хотел спросить что я собственно определяю этой записью j=i-1 и с какого элемента у меня будет происходить сортировка с 1 или с 0?
Visual Basic
1
2
3
4
For i = 1 To n
y = a(i)
j = i - 1
Do While (a(j) > y)
Заранее спасибо!
0
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
10.06.2018, 22:07
я, честно говоря, не помню как работает алгоритм сортировки методом вставки. Способов сортировки, знаю, существует очень много.
Цитата Сообщение от Diman1999 Посмотреть сообщение
с какого элемента у меня будет происходить сортировка с 1 или с 0?
если представить пошаговое выполнение программы (кстати, вы можете сделать это по F8 в окне редактора VB), то программа дойдет до строки For i = 1 To n, присвоит переменной i единицу и сравнит i с n. Далее y будет равен первому элементу массива a(), а j будет равен i минус единица. Поскольку на первом проходе i у нас равно единице, то j, стало быть, будет равен нулю. И в 4-й строчке будет сравнение a(0) и a(1)
0
0 / 0 / 0
Регистрация: 20.05.2018
Сообщений: 12
12.06.2018, 22:02  [ТС]
А как мне тогда сделать так, чтобы у меня сортировка шла с первого элемента, а не с нулевого, не могли бы еще подсказать?

Добавлено через 17 минут
Или благодаря тому что мы переменную j записываем как i-1, у нас и получается что сравниваться во вложенном цикле предыдущий элемент массива с последующим?
0
193 / 191 / 31
Регистрация: 11.10.2016
Сообщений: 610
13.06.2018, 12:46
Diman1999, смотрите, в общих чертах сортировка работает по такому принципу: цикл от первого элемента до предпоследнего (последний нет необходимости проверять, поскольку предпоследний расположится либо где-нибудь перед ним, либо после него.) Далее идет цикл N 2, где мы проверяем все элементы, начиная с последующего и до последнего (а вот здесь последний элемент используется, поскольку проверяемый элемент может вставиться после него). И, как правило, в начале каждого цикла N2 сначала сравниваются два соседних элемента.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2018, 12:46
Помогаю со студенческими работами здесь

Сортировка массива пузырьковым методом и методом вставки
нужно написать программу которая будет делать сортировку этими способами в массиве 3x10, две кнопки, таблица (3х10), собственно...

Сортировка массива методом вставки
Написать программу, для сортировки массива (в том числе создать сам массив ), методом вставки. Спасибо большое

Сортировка массива методом вставки
Может кто-нибудь, построчно объяснить код предложенный ниже.И каким образом у нас будет сортироваться 2 в массиве 1 3 5 7 2? #include...

Сортировка методом вставки n*n массива
Нужно написать сортировку на языке Джава методом вставка. Алгоритм для одномерного массива был по большей части позаимствован с википедии....

Сортировка массива методом вставки
есть массив из 40 рандомных значений. с 5 по 40 парные элементы нужно отсортировать по возрастанию. пример не совсем правильно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru