C/C++
Алгоритмы. Бинарная сортировка
Я начал изучать структуры данных/алгоритмы и я должен понять алгоритм бинароной сортировки. Обьясните алгоритм пж а то в интернете код показывают а мне нужен алгоритм - а я в коде реализую
ой я такое не понимаю
Код - это и есть запись алгоритма. Описание на естественном языке всегда может быть понято неправильно, а понимание кода однозначно. И умение читать чужой код - необходимый базовый навык любого программиста.
Непонятно, что такое "бинарная сортировка". Если "быстрая сортировка", то алгоритм описан в Википедии. Если "сортировка двоичным деревом", то алгоритм построения и обхода дерева тоже есть в Вики - в статье "Двоичное дерево поиска".
Непонятно, что такое "бинарная сортировка". Если "быстрая сортировка", то алгоритм описан в Википедии. Если "сортировка двоичным деревом", то алгоритм построения и обхода дерева тоже есть в Вики - в статье "Двоичное дерево поиска".
Титов Юрий
какая сотрировка испольуется в бинаронм поиске? такую я и имел ввиду
Видимо, сортировка простыми вставками с бинарным поиском?
См. https://habr.com/ru/post/415935/ , там даже визуализация есть.
См. https://habr.com/ru/post/415935/ , там даже визуализация есть.
Есть понятие бинарного поиска числа в массиве, который определяет, есть ли число в массиве или нет. Работает он следующим образом:
Нам дан массив целых чисел от 0 до 9.
У этого массива есть Начало(min=0) и Конец(max=9).
Есть число x, допустим это число 3. Нам нужно определить, является ли это число частью массива целых чисел от 0 до 9.
Это число мы сравниваем с серединой массива (с элементом 4). Если x<4, (то есть меньше половины) то значение максимума меняется на элемент, который меньше середины на 1, то есть max теперь равно не 9, а 4-1 или 3. И таким образом большая часть чисел отсекается, диапазон чисел для проверки сокращается и теперь он равен от 0 до 3.
Теперь новой серединой нового диапазона является второй элемент из 4-х элементов (4 элемента/2), это элемент №1(ведь диапазон от 0 до 4) Сравниваем x с этой серединой. (если x<2, то min=0, а max=1, если x>2, то min=3, а max=4) - тут выполняется одно из двух неравенств. Где x>2, поэтому min=n[min+1] или 3, а max=4. Идем дальше. Новая середина это 2/2 (2 элемента/2)=1-й элемент(нулевой для компьютера)
x<3 или 3<3? нет, значит max = 4-1=3. Так как min=max, то проверять больше нечего и x=3.
Может получиться и так, что нам даны числа, расстояние между которыми может различаться более чем на 1. Например, x=3, а диапазон чисел остался в виде двух чисел: n[0]=1, n[2]=4.
x>n[0]? да, значит min=n[0+1].
min=max, что значит что искать больше нечего, а число x все еще больше или меньше значений элементов n[0] и n[1], то есть x не входит в массив.
Нам дан массив целых чисел от 0 до 9.
У этого массива есть Начало(min=0) и Конец(max=9).
Есть число x, допустим это число 3. Нам нужно определить, является ли это число частью массива целых чисел от 0 до 9.
Это число мы сравниваем с серединой массива (с элементом 4). Если x<4, (то есть меньше половины) то значение максимума меняется на элемент, который меньше середины на 1, то есть max теперь равно не 9, а 4-1 или 3. И таким образом большая часть чисел отсекается, диапазон чисел для проверки сокращается и теперь он равен от 0 до 3.
Теперь новой серединой нового диапазона является второй элемент из 4-х элементов (4 элемента/2), это элемент №1(ведь диапазон от 0 до 4) Сравниваем x с этой серединой. (если x<2, то min=0, а max=1, если x>2, то min=3, а max=4) - тут выполняется одно из двух неравенств. Где x>2, поэтому min=n[min+1] или 3, а max=4. Идем дальше. Новая середина это 2/2 (2 элемента/2)=1-й элемент(нулевой для компьютера)
x<3 или 3<3? нет, значит max = 4-1=3. Так как min=max, то проверять больше нечего и x=3.
Может получиться и так, что нам даны числа, расстояние между которыми может различаться более чем на 1. Например, x=3, а диапазон чисел остался в виде двух чисел: n[0]=1, n[2]=4.
x>n[0]? да, значит min=n[0+1].
min=max, что значит что искать больше нечего, а число x все еще больше или меньше значений элементов n[0] и n[1], то есть x не входит в массив.
Похожие вопросы
- Алгоритмы STL, sort, первичный и вторичный ключи для сортировки.
- Сравнение скорости сортировки выбором и сортировки слиянием (SelectionSort vs MergeSort)
- Почему не существует универсального алгоритма сортировки?
- Выполните сортировку массивов ТРЕМЯ СПОСОБАМИ: методом пузырька, прямого поиска и быстрой сортировкой. С++
- Выполните сортировку массивов ТРЕМЯ СПОСОБАМИ: методом пузырька, прямого поиска и быстрой сортировкой. С++
- Задача на сортировку структур. Язык C++.
- Проблемы с сортировкой массива методом пузырька.
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- КОНТРОЛЬНЫЕ ЗАДАНИЯ ПО СОРТИРОВКЕ МАССИВОВ
- С++ Сортировка массива