Список использованной литературы
Блох, Джошуа. Эффективное программирование на Java. — Москва: ДМК Пресс, 2020. — 456 с.
Еккель, Брюс. Философия Java. — Санкт-Петербург: Питер, 2019. — 1152 с.
Селдер, Рауль-Урма, Фурньо, Марио, Алан Майер. Java 8 и 9 в действии. — Москва: Манн, Иванов и Фербер, 2020. — 784 с.
Орельский, Владимир. Изучаем Java с нуля. — Москва: БХВ-Петербург, 2020. — 512 с.
Хорстманн, Кей С. Биг Java: ранние объекты. — Москва: Питер, 2020. — 1200 с.
Албахари Дж. C# 6.0. Справочник. Полное описание языка. — 6-е изд. изд. — Москва: Вильямc, 2016. — 1040 с.
Герман О. Программирование на Java и C# для студента — Санкт-Петербург: БХВПетербург, 2014. — 512 c.
Приложение а Листинг программы задания №1
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;
public class Main
{
public static void quickSort(List<Integer> list, int low, int high) {
if (low < high) {
int pivot = list.get(high);
int i = low - 1;
for (int j = low; j < high; j++) {
if (list.get(j) < pivot) {
i++;
Collections.swap(list, i, j);
}
}
Collections.swap(list, i + 1, high);
int pi = i + 1;
quickSort(list, low, pi - 1);
quickSort(list, pi + 1, high);
}
}
public static void insertionSort(List<Integer> list) {
for (int i = 1; i < list.size(); i++) {
int key = list.get(i);
int j = i - 1;
while (j >= 0 && list.get(j) > key) {
list.set(j + 1, list.get(j));
j--;
}
list.set(j + 1, key);
}
}
public static void main(String[] args)
{
final int N = 100000;
Random random = new Random();
System.out.printf("%-16s | %-15s | %-13s | %-17s\n", "Experiment №", "Quick Sort, ms", "std::sort, ms", "Insertion Sort, ms");
double totalQuickSortTime = 0.0;
double totalStdSortTime = 0.0;
double totalInsertionSortTime = 0.0;
for (int experimentNumber = 1; experimentNumber <= 5; experimentNumber++) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
list.add(random.nextInt(N) + 1);
}
List<Integer> listCopy1 = new ArrayList<>(list);
List<Integer> listCopy2 = new ArrayList<>(list);
long start = System.nanoTime();
quickSort(list, 0, N - 1);
long end = System.nanoTime();
double quickSortTime = TimeUnit.NANOSECONDS.toMillis(end - start);
totalQuickSortTime += quickSortTime;
start = System.nanoTime();
Collections.sort(listCopy1);
end = System.nanoTime();
double stdSortTime = TimeUnit.NANOSECONDS.toMillis(end - start);
totalStdSortTime += stdSortTime;
start = System.nanoTime();
insertionSort(listCopy2);
end = System.nanoTime();
double insertionSortTime = TimeUnit.NANOSECONDS.toMillis(end - start);
totalInsertionSortTime += insertionSortTime;
System.out.printf("%-16d | %-15.2f | %-13.2f | %-17.2f\n", experimentNumber, quickSortTime, stdSortTime, insertionSortTime);
}
System.out.printf("%-16s | %-15.2f | %-13.2f | %-17.2f\n", "Average Time", totalQuickSortTime / 5, totalStdSortTime / 5, totalInsertionSortTime / 5);
}
}