Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Лекции / 4 - Презентация - Полиморфизм

.pdf
Скачиваний:
71
Добавлен:
25.12.2020
Размер:
19.24 Mб
Скачать

Центрдистанционногообучения

Сортировка вставками

• Например:

 

 

 

 

 

первоначально:

3

9

6

1

2

insert 9:

3

9

6

1

2

insert 6:

3

6

9

1

2

insert 1:

1

3

6

9

2

insert 2:

1

2

3

6

9

9-21

online.mirea.ru

Один класс - два методаЦентрдистанционногообучения

сортировки

public class Sorting { //выбором

public static void selectionSort (Comparable[] list) { int min;

Comparable temp;

for (int index = 0; index < list.length-1; index++)

{

min = index;

for (int scan = index+1; scan < list.length; scan++)

if (list[scan].compareTo(list[min]) < 0)

min = scan;

 

 

temp = list[min];

 

 

list[min] = list[index];

9-22

 

list[index] = temp;

online.mirea.ru

 

 

 

Центрдистанционногообучения

//вставками publicСортировкаstatic void insertionSortвставками(Comparable[] list) {

for (int index = 1; index < list.length; index++) { Comparable key = list[index];

int position = index;

//Shift larger values to the right

while (position > 0 && key.compareTo(list[position-1]) < 0) {

list[position] = list[position-1]; position--;

}

 

list[position] = key;

 

 

}

 

}

9-23

online.mirea.ru

 

Сортировка выбором Центрдистанционногообучения

public class DemoPhoneList{

public static void main (String[] args) { Contact[] friends = new Contact[8];

friends[0] = new Contact ("John", "Smith", "610-555-7384"); friends[1] = new Contact ("Sarah", "Barnes", "215-555-3827"); friends[2] = new Contact ("Mark", "Riley", "733-555-2969"); friends[3] = new Contact ("Laura", "Getz", "663-555-3984"); friends[4] = new Contact ("Larry", "Smith", "464-555-3489"); friends[5] = new Contact ("Frank", "Phelps", "322-555-2284"); friends[6] = new Contact ("Mario", "Guzman", "804-555-9066"); friends[7] = new Contact ("Marsha", "Grant", "243-555-2837"); Sorting.selectionSort(friends);

for (Contact friend : friends) System.out.println (friend);

}

}

9-24

online.mirea.ru

Центрдистанционногообучения

Сравнение сортировок

Алгоритмы сортировки выбора и вставки аналогичны по эффективности

Они оба имеют внешние циклы, которые сканируют все элементы и внутренние циклы, которые сравнивают значение внешнего цикла почти со всеми значениями в списке

Приблизительно n2 число сравнений будут сделаны для сортировки списка размера n

Поэтому мы говорим, что эти виды сортировок имеют порядок n2

Другие виды сортировок являются более эффективными: порядок n log2 n

9-25

online.mirea.ru

Алгоритмы поиска в JavaЦентрдистанционногообучения

программах

Поиск является процессом нахождения целевого элемента в

пределах группы элементов, которая называется называется пул поиск

Целевой или искомый элемент может находится в поисковом пуле, а может там отсутствовать

В любом случае, мы хотим, чтобы эффективно выполнять поиск, сводя к минимуму количество сравнений

Давайте рассмотрим поиск на двух классических подходах поиска: линейный поиск и бинарный поиск

Точно так же как мы это делали с сортировкой, мы будем осуществлять поиск с полиморфными параметрами

Comparable

9-26

online.mirea.ru

Центрдистанционногообучения

Алгоритм линейного поиска

Линейный или последовательный поиск начинается на с одного конца списка просматриваемых элементов, и все элементы по очереди проверяется на искомый элемент

Поиск заканчивается в случае, если найден искомый элемент или достигаем конца списка

9-27

online.mirea.ru

Центрдистанционногообучения

Алгоритм бинарного поиска

Бинарный (Двоичный) поиск принимает список элементов и помещает их в отсортированный пул поиска

Это исключает большую часть поискового пула с одним сравнением

Двоичное первый исследует средний элемент списка - если она соответствует цели, поиск окончен

Если этого не произойдет, только половина из оставшихся элементов нужно искать

Так как они сортируются, цель может быть только в одной половине другой

9-28

online.mirea.ru

Центрдистанционногообучения

Бинарный поиск

Процесс продолжается путем сравнения среднего элемента с оставшимися кандидатами на сравнение

Каждое сравнение исключает приблизительно половину оставшихся данных

В конце концов, либо искомая цель найдена, или данные для поиска исчерпаны

9-29

online.mirea.ru

Два метода в одном классеЦентрдистанционногообучения

public class Searching{ // линейный

public static Comparable linearSearch (Comparable[] list,Comparable target) {

int index = 0; boolean found = false;

while (!found && index < list.length)

{

 

if (list[index].compareTo(target)==0)

 

found = true;

 

 

else

 

 

index++;

 

 

}

 

 

if (found)

 

 

return list[index];

9-30

 

else

online.mirea.ru

 

Соседние файлы в папке Лекции