Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Сортировки. Двоичный поиск

Содержание

Быстрая сортировка (Ч. Хоар, 1962) 
Сортировки.  Двоичный поиск. Быстрая сортировка (Ч. Хоар, 1962)  Пример: 1) 4 9 7 6 2 3 8 2) 4 3 Сортировка слиянием (Дж. Фон Нейман, 1945)  Пример:2 4 7 6 2 3 8 - [0;6]2 4 7 6 Пирамидальная сортировка  Сортировка подсчётомИдея: использование конечной длины сортируемых чиселВремя работы – O(n)Сортировка устойчива Двоичный поискДвоичный поиск — алгоритм поиска объекта по заданному признаку в множестве ЗадачаПусть нам дан упорядоченный массив, состоящий только из целочисленных элементов. Требуется найти Принцип работыДвоичный поиск заключается в том, что на каждом шаге множество объектов Задача      Некоторые полезные советы при работе с вещественными числами Когда имеешь дело с вещественными числами в первую очередь нужно подумать нельзя Неправильный выбор:If ((double)a/b < (double)с/d)Правильный выбор:If (a * d < c * Пример 2:Нам нужен цикл до sqrt(n) включительно.Неправильный выбор: for(int i = 0; i Пример 3:Сравнить расстояния между точками a,b и c,dint d1 = sqr(a.x-b.x) + Если всё-таки приходится работать с вещественными числами, то всегда нужно стараться уменьшить Пример 2:У нас есть прямоугольный треугольник, мы знаем длины его сторон a,b,c Если у нас возможно равенство вещественных чисел, то их всегда нужно сравнивать При работе с бинпоиском, если нам нужно найти число с какой-то точностью, Полезные ссылкиgoo.gl/KKdq1i – представление вещественных чисел в памяти компьютера
Слайды презентации

Слайд 2 Быстрая сортировка (Ч. Хоар, 1962)
 

Быстрая сортировка (Ч. Хоар, 1962) 

Слайд 3 Пример:
1) 4 9 7 6 2 3

Пример: 1) 4 9 7 6 2 3 8 2) 4

8
2) 4 3 2 6 7 9 8


3) 2 3 4 6 7 9 8
4) 2 3 4 6 7 8 9

Слайд 4 Сортировка слиянием (Дж. Фон Нейман, 1945)
 

Сортировка слиянием (Дж. Фон Нейман, 1945) 

Слайд 5 Пример:
2 4 7 6 2 3 8 -

Пример:2 4 7 6 2 3 8 - [0;6]2 4 7

[0;6]
2 4 7 6 2 3 8 - [0;3]
2

4 7 6 2 3 8 - [0;1]
2 4 7 6 2 3 8 - [2;3]
2 4 6 7 2 3 8 - [4;6]
2 4 6 7 2 3 8 - [4;5]
Итог: 2 2 3 4 6 7 8


Слайд 6 Пирамидальная сортировка
 

Пирамидальная сортировка 

Слайд 7 Сортировка подсчётом
Идея: использование конечной длины сортируемых чисел
Время работы

Сортировка подсчётомИдея: использование конечной длины сортируемых чиселВремя работы – O(n)Сортировка устойчива

– O(n)
Сортировка устойчива


Слайд 9 Двоичный поиск
Двоичный поиск — алгоритм поиска объекта по

Двоичный поискДвоичный поиск — алгоритм поиска объекта по заданному признаку в

заданному признаку в множестве объектов, упорядоченных по тому же

самому признаку, работающий за логарифмическое время.

Слайд 10 Задача
Пусть нам дан упорядоченный массив, состоящий только из

ЗадачаПусть нам дан упорядоченный массив, состоящий только из целочисленных элементов. Требуется

целочисленных элементов. Требуется найти позицию, на которой находится заданный

элемент или сказать, что такого элемента нет.

Слайд 11 Принцип работы
Двоичный поиск заключается в том, что на

Принцип работыДвоичный поиск заключается в том, что на каждом шаге множество

каждом шаге множество объектов делится на две части и

в работе остаётся та часть множества, где находится искомый объект.

Слайд 13 Задача
 

Задача 

Слайд 16 Некоторые полезные советы при работе с вещественными числами

Некоторые полезные советы при работе с вещественными числами

Слайд 17 Когда имеешь дело с вещественными числами в первую

Когда имеешь дело с вещественными числами в первую очередь нужно подумать

очередь нужно подумать нельзя ли от них избавиться и

перейти к целым.

Пример 1:
Нам нужно сравнить два числа вида a/b, где а и b целые числа


Слайд 18 Неправильный выбор:
If ((double)a/b < (double)с/d)

Правильный выбор:
If (a *

Неправильный выбор:If ((double)a/b < (double)с/d)Правильный выбор:If (a * d < c

d < c * b)

Исключение:
Когда a * d или

c * b не помещаются в целочисленный тип

Слайд 19 Пример 2:
Нам нужен цикл до sqrt(n) включительно.

Неправильный выбор:

Пример 2:Нам нужен цикл до sqrt(n) включительно.Неправильный выбор: for(int i = 0; i

for(int i = 0; i

for(int i = 0; i * i <= n; i++)


Слайд 20 Пример 3:
Сравнить расстояния между точками a,b и c,d

int

Пример 3:Сравнить расстояния между точками a,b и c,dint d1 = sqr(a.x-b.x)

d1 = sqr(a.x-b.x) + sqr(a.y-b.y);
int d2 = sqr(c.x-d.x) +

sqr(c.y-d.y);
Вместо:
if (sqrt(d1) < sqrt(d2))

Лучше:
if (d1 < d2)

Слайд 21 Если всё-таки приходится работать с вещественными числами, то

Если всё-таки приходится работать с вещественными числами, то всегда нужно стараться

всегда нужно стараться уменьшить погрешность вычислений

Пример 1:
b/a + c/a

+ … = (b + c + …)/a;

Слайд 22 Пример 2:
У нас есть прямоугольный треугольник, мы знаем

Пример 2:У нас есть прямоугольный треугольник, мы знаем длины его сторон

длины его сторон a,b,c и один из углов A.

Нужно найти sin(B)

Не лучший выбор:
sinb = sin(pi - A);

Можно так:
sinb = b/c;

Слайд 23 Если у нас возможно равенство вещественных чисел, то

Если у нас возможно равенство вещественных чисел, то их всегда нужно

их всегда нужно сравнивать по eps
abs(a - b)

eps <=> a == b

Eps должен быть меньше требуемой точности, но больше лучшей точности.
Обычно выбирают eps = 1e-9;
А вообще вопрос точности при работе с вещественными типами это философский вопрос ☺

Слайд 24 При работе с бинпоиском, если нам нужно найти

При работе с бинпоиском, если нам нужно найти число с какой-то

число с какой-то точностью, то почти всегда лучше это

делать итерационно

Пример:
Нам нужно найти корень функции с заданной точностью

Не правильный выбор:
while((r – l) < eps)

Правильный выбор:
for (int i = 0; i < 100; i++)

  • Имя файла: sortirovki-dvoichnyy-poisk.pptx
  • Количество просмотров: 125
  • Количество скачиваний: 0