Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Бишоп Д. -> "Эффективная робота Java 2" -> 96

Эффективная робота Java 2 - Бишоп Д.

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 90 91 92 93 94 95 < 96 > 97 98 99 100 101 102 .. 259 >> Следующая

Принимаем,что элемент с индексом leftmost является наименьшим
Для всех элементов списка
Если следующий элемент меньше, фиксируем его индекс
Рис. 6.14. Алгоритм для сортировки методом отбора
static void selectionSort (doublet ] a, int n) { double temp; int chosen;
for ?int leftmost =0; leftmost < n - 1; leftmost ++> { chosen = leftmost;
for (int j - leftmost + 1; j < n; j ++ ) if (atjl < a[chosen]) chosen = j;
temp = atchosen]; a [ chosen J “ a [leftmost] ,* a(leftmost] - temp;
}
}
Сортировку часто приходится выполнять в процессе вычислений, поэтому полезно всегда иметь под рукой надежный алгоритм сортировки, Приведенный выше алгоритм может быть применен к массивам любой длины, содержащим элементы любого типа, а также может использоваться для сортировки в порядке убывания (достаточно в операции сравнения заменить знак < знаком >). Обратите внимание на то, что при сортировке в порядке убывания перемещаемые влево элементы будут наибольшими, а не наименьшими. Рассматриваемый алгоритм сортирует массив элементов, которые имеют тип double, для сравнения в нем используется оператор <.
Сорти ров ко и поиск
215
Но если элементами, которые нужно отсортировать* являются объекты, оператор < не подойдет, и мы должны будем заменить его методом lessThan или сошрагеТо.
Поиск
Простой линейный поиск предусматривает просмотр массива в цикле до тех пор,
пока не будет найден нужный элемент или достигнут конец массива, Если же
требуется всего лишь узнать, присутствует ли данный элемент в массиве, можно воспользоваться методом, который возвращает булево значение* Например:
boolean search (double [ ] a, int п, double х. > (
for {int і = 0; і < n; і+ + ) {
if [X == а[і]5 return true;
Для получения индекса найденного элемента нужен более сложный метод* Мы вернемся к рассмотрению этой темы в главе 15, а пока решим еще одну задачу, используя изученные алгоритмы,
Задача. Данный пример иллюстрирует применение на практике изученных алгоритмов.
Решение. Мы попробуем смоделировать проблему, которую можно было бы решить, используя рассмотренные методы. Остановимся на следующем сценарии. Из файла поочередно считываются слова и формируется массив, содержащий слова только в единственном экземпляре, после чего элементы массива сортируются и выводятся.
Алгоритм. На рис. 6.15 представлена та часть программы, которая отвечает за создание массива уникальных слов. После этого массив выводится, сортируется и выводится еще раз.
Программа. С помощью метода seiactionSort осуществляется сортировка строк. Как отмечалось в разделе 3,6, оператор < нельзя применять для сравнения объектов (в частности наших объектов string). Поэтому мы воспользуемся методом сошрагеТо или compareTolgnoreCase. Тот же метод будет использован в процессе поиска. Далее следует текст программы,
else
return false;
Сортировка слов в файле
Алгоритм создания массива уникальных слов
Считываем слово Оно ужа есть э массиве?
Добавить.
Увеличить
индекс.
2
і
Рис 6,15, Алгоритм для создания массива уникальных слов
216
Глава 6. Массивы и таблицы
import j ava.і о* *; import javagently.*; import myutiiities.*;
class SortWortis {
/* Программа "Сортировка слов". Автор - Дж. М. Бишоп, февраль 1997 г.
* —===-=====--——^=========== Java 1.1 - октябрь 1997 г.
* Обновление - июнь 2000 г*
* Считывает и сортирует до 100
* различных слов.
*¦ Демонстрирует сортыроБтеу и поиск в массиве.
*/
void selectionSort(String[] a, int n) {
String temp; int chosen;
for (int leftmost = 0; leftmost < n-1; leftmost**) { chosen = leftmost;
for {int j = leftmost*!; j < n; j++) if (a[j1,compareTo(a[chosen])<0) chosen = j; temp = a[chosen]; a[chosen 1 = a[leftmostJ; a[leftmost] = temp;
)
}
j
boolean search (String[] a, int nT String x) { for tint І = 0; і < n; i++)
if (x.compareTo(a[i])==0) return true; return false;
}
void report(String[} a, int n) { for {int і — Q; і < n; і+-ь) {
System.out.print(a[i]+"\t");
if (i>0 && і % 7 = 0) System.out.printlnІ);
}
}
SortWords() throws lOException {
String group [] = new 5tring[100j;
System, out. print f11 Где находятся слова? 11) ;
Stream fin - Filer.open tMtl} ;
int count=0; try і
while (count < 100) (
Предыдущая << 1 .. 90 91 92 93 94 95 < 96 > 97 98 99 100 101 102 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.