
3-й семестр / Лекции / 4 - Презентация - Полиморфизм
.pdf
Центрдистанционногообучения
Сортировка вставками
• Например: |
|
|
|
|
|
первоначально: |
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 |
||
|