Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СиАОД Архангельский М.В. БСТ-2154.docx
Скачиваний:
16
Добавлен:
01.05.2023
Размер:
162.71 Кб
Скачать

Список использованной литературы

  1. Блох, Джошуа. Эффективное программирование на Java. — Москва: ДМК Пресс, 2020. — 456 с.

  2. Еккель, Брюс. Философия Java. — Санкт-Петербург: Питер, 2019. — 1152 с.

  3. Селдер, Рауль-Урма, Фурньо, Марио, Алан Майер. Java 8 и 9 в действии. — Москва: Манн, Иванов и Фербер, 2020. — 784 с.

  4. Орельский, Владимир. Изучаем Java с нуля. — Москва: БХВ-Петербург, 2020. — 512 с.

  5. Хорстманн, Кей С. Биг Java: ранние объекты. — Москва: Питер, 2020. — 1200 с.

  6. Албахари Дж. C# 6.0. Справочник. Полное описание языка. — 6-е изд. изд. — Москва: Вильямc, 2016. — 1040 с.

  7. Герман О. Программирование на 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);

}

}