Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
Для того чтобы воспользоваться классом Quicksort, достаточно вызвать метод Quicksort. qsort (). Этот метод определен как static, и поэтому для его вызова достаточно указать имя класса, а создавать объект не обязательно. По завершении работы этого метода массив будет отсортирован. Данная версия программы работает только с символьными массивами, но вы можете адаптировать ее для сортировки массивов любого типа.
Ниже приведен весь исходный код программы, демонстрирующей применение класса Quicksort.
// Пример для опробования 6.3. Простая версия класса Quicksort,
// реализующего быструю сортировку,
class Quicksort {
// организовать вызов конкретного метода быстрой сортировки
static void qsort(char items[]) {
qs(items, 0, items.length-1);
}
// Рекурсивная версия метода быстрой сортировки символов,
private static void qs(char items[], int left, int right)
{
int i, j;
char x, y;
i = left; j = right;
x = items[(left+right)/2];
do {
while((items[i] < x) && (i < right)) i++;
while((x < items[j]) && (j > left)) j—;
if(i <= j) {
у = items[i];
items[i] = items[j];
items[j] = y;
i++; j—;
}
} while (i <= j);
if(left < j) qs(items, left, j);
if(i < right) qs(items, i, right);
}
}
class QSDemo {
public static void main(String args[]) {
char a [ ] = { 'd\ 'x', 'a', 'r', 'p\ 'j', 'i' };
int i;
System.out.print("Original array: ");
for(i=0; i < a.length; i++)
System.out.print(a[i]) ;
System.out.println();
// отсортировать массив
Quicksort.qsort(a);
System.out.print("Sorted array: ");
for(i=0; i < a.length; i++)
System.out.print(a[i]);
}
}
Вложенные и внутренние классы
В Java определены вложенные классы. Вложенным называется такой класс, который объявляется в другом классе. Вложенные классы не относятся к базовым языковым средствам Java. Они даже не поддерживались до появления версии Java 1.1, хотя с тех пор часто применяются в реальных программах, и поэтому о них нужно знать.
Вложенный класс не может существовать независимо от объемлющего класса, потому что последний ограничивает область его действия. Если вложенный класс объявлен в пределах области действия объемлющего класса, он становится членом последнего. Имеется также возможность объявить вложенный класс, который станет локальным в пределах блока.
Существуют два типа вложенных классов. Одни вложенные классы объявляются с помощью модификатора доступа static, а другие — без него. В этой книге будет рассматриваться только нестатический вариант вложенных классов. Классы такого типа называются внутренними. Внутренний класс имеет доступ ко всем переменным и методам внешнего (т.е. объемлющего) класса и может обращаться к ним непосредственно, как и все остальные нестатические члены внешнего класса. Иногда внутренний класс используется для предоставления услуг объемлющему классу. Ниже приведен пример применения внутреннего класса для вычисления различных значений в объемлющем его классе.
// Применение внутреннего класса,
class Outer {
int nums[];
Outer(int n[]) {
nums = n;
}
void Analyze() {
Inner inOb = new Inner();
System.out.println("Minimum: 11 + inOb.minO);
System.out.println("Maximum: " + inOb.maxO);
System.out.println("Average : " + inOb.avgO);
}
// Внутренний класс.
class Inner {
int min() {
int m = nums[0];
for (int i=l; i < nums.length; i++)
if(nums[i] < m) m = nums[i];
return m;
}
int max() {
int m = nums[0];