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

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

09.06.2018, 12:24. Показов 2133. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru