Реализация алгоритмов поиска на языке Java

Существенный анализ выполнения быстрой рекурсивной сортировки. Реализация поиска подстрок с помощью конечного автомата. Особенность создания объектов на языке Java. Создание улучшенного линейного поиска. Характеристика построения сортировки выбором.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 13.01.2020
Размер файла 14,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет информатики и радиоэлектроники»

Кафедра информационных радиотехнологий

Контрольная работа

По дисциплине «Технология проектирования программного обеспечения информационных систем»

Выполнил:

Манько С.К.

Минск БГУИР 2019

Задание 1

Реализовать три алгоритма поиска на языке Java.

- Линейный поиск.

-Улучшенный линейный поиск.

- Поиск с ограничителем.

Решение

package edu;

import java.io.IOException;

import java.util.Random;

public class Task01 {

int[] A = new int[20];

int request;

Task01() {

fillArray();

System.out.print("Введите число от 0 до 9: ");

try {

request = System.in.read() - 48;

System.out.println(search01());

System.out.println(search02());

System.out.println(search03());

}

catch (Exception Ex) {

}

}

void fillArray() {

for(int i = 0; i < A.length; i++) {

A[i] = Math.abs(new Random().nextInt() % 10);

System.out.print(A[i]);

}

System.out.println();

}

static public void main(String Args[]) {

new Task01();

}

String search01() throws IOException {// находит первое вхождение искомого числа

String answer = "";

System.out.print("Поиск по последнему вхождению. Результат: ");

for (int i = 0; i < A.length; i++) {

if(A[i] == (int) request) {

answer = ((i + 1) + " ");

}

}

return answer;

}

String search02() throws IOException { // находит последнее вхождение искомого числа

String answer = "";

System.out.print("Поиск по первому вхождению. Результат: ");

for (int i = 0; i < A.length; i++) {

if(A[i] == (int) request) {

answer = ((i + 1) + " ");

break;

}

}

return answer;

}

String search03() throws IOException {// находит все вхождения искомого числа

String answer = "";

System.out.print("Поиск по всем вхождениям. Результат: ");

for (int i = 0; i < A.length; i++) {

if(A[i] == (int) request) {

answer += ((i + 1) + " ");

}

}

if(answer == "") return "No matches";

else return answer;

}

}

Задание 2

1 Сделать сортировку выбором;

2 Сделать быструю рекурсивную сортировку.

- Сортировка выбором.

package zadanie2;

import java.util.Scanner;

public class Zadanie21 {

public static void main(String[] args) {

System.out.println("----------------------------");

System.out.println("-- 2.1 Сортировкавыбором --");

System.out.println("----------------------------");

Scanner input = new Scanner(System.in);

System.out.println("Введите длинну массива: ");

int size = input.nextInt();

int A[] = new int[size];

System.out.println("Введитеэлементымассива: ");

for(int i = 0; i < size; i++){

A[i] = input.nextInt();

}

System.out.println("Заданныймассивэлементов: ");

for(int i = 0; i < size; i++){

System.out.print(" " + A[i]);

}

System.out.println();

for(int i=0; i<A.length-1; i++){

int smallest=i;

for(int j=i+1; j<A.length; j++){

if(A[j]<A[smallest]){

smallest=j;

} линейный поиск язык автомат

int temp=A[smallest];

A[smallest]=A[i];

A[i]=temp;

}

}

System.out.println("Массивпослесортировки: ");

for(int i = 0; i < size; i++){

System.out.print(" " + A[i]);

}

System.out.println();

}

}

- Быстрая рекурсивная сортировка.

package zadanie2;

importjava.util.Random;

public class Zadanie22 {

public static int ARRAY_LENGTH=30;

private static int array[]=new int[ARRAY_LENGTH];

private static Random generator=new Random();

public static void initArray(){

for(int i=0; i<ARRAY_LENGTH; i++){

array[i]=generator.nextInt(100);

}

}

public static void printArray(){

for(int i=0; i<ARRAY_LENGTH-1; i++){

System.out.print(array[i]+" ");

}

System.out.println(array[ARRAY_LENGTH-1]);

}

public static void quickSort(){

intstartIndex=0;

intendIndex=ARRAY_LENGTH-1;

doSort(startIndex, endIndex);

}

private static void doSort(int start, int end){

if(start>=end)

return;

int i=start, j=end;

int cur=i-(i-j)/2;

while(i<j){

while(i<cur && (array[i]<=array[cur])){

i++;

}

while(j>cur && (array[cur]<=array[j])){

j--;

}

if(i<j){

int temp=array[i];

array[i]=array[j];

array[j]=temp;

if(i==cur)

cur=j;

elseif(j==cur)

cur=i;

}

}

doSort(start, cur);

doSort(cur+1, end);

}

public static void main(String[] args) {

System.out.println("---------------------------");

System.out.println("-- 2.2 Быстраясортировка --");

System.out.println("---------------------------");

initArray();

printArray();

quickSort();

printArray();

}

}

Задание 3

Реализовать поиск подстрок с помощью конечного автомата.

- Поиск подстрок с помощью конечного автомата.

package zadanie3;

public class Zadanie3 {

private static String T = "FADDADFAADFG";

private static String P = "ADF";

private static int n = T.length();

private static int m = P.length();

public static void main(String[] args) {

int symbol = nextState(T);

System.out.println(symbol - m + 1);

}

public static int nextState(String T){

int state = 0;

int symbol = 0;

while(symbol <T.length()){

char c = T.charAt(symbol);

switch(state){

case 0: if(c == 'A'){

state = 1;

}else{

state = 0;

};

break;

case 1: if(c == 'D'){

state = 2;

}else{

if(c =='A'){

state = 1;

}else{

state = 0;

}

};

break;

case 2: if(c == 'F'){

state = 3;

return symbol;

}else{

if(c =='A'){

state = 1;

}else{

state = 0;

}

};

break;

case 3: if(c == 'A'){

state = 1;

}else{

state = 0;

};

break;

}

symbol++;

}

return -1;

}

}

Задание 4

- Создание объектов

package edu;

import java.util.Random;

public class Task04 { //класс программы

Worker office[] = new Worker[10];

Task04() {

System.out.println("Работа с объектами\n\nпо условию у начальника зарплатa в двое выше чем у обычного сотрудника\nразбежка в зарплатах - 150$\n");

fillOffice(); //метод таска

}

static public void main(String args[]) {

new Task04();

}

void fillOffice() { //заполнение массива

for(int i = 0; i < office.length - 1; i++) {

office[i] = new Worker(getRandomName(), getRandomBirthDay(), getRandomMonthPay());

}

office[office.length - 1] = new Supervisor(getRandomName(), getRandomBirthDay(), getRandomMonthPay());

System.out.println("\nПовышаем зарплату на 50 процентов\n");

for(int i = 0; i < office.length; i++) {

office[i].increaceMonthPay(0.5);

}

}

String getRandomName() {

String firstName[] = {"Bob", "Lusy", "Edd", "Sarah", "Tom", "Jane", "Phill", "Aliss", "John", "Anna"};

String lastName[] = {"Brown", "Shepard", "Williams", "Smith", "Collins", "Stone", "White", "Black", "Cotton", "Shefild"};

return firstName[Math.abs(new Random().nextInt() % 10)] + " " + lastName[Math.abs(new Random().nextInt() % 10)];

}

String getRandomBirthDay() {

return (Math.abs(new Random().nextInt()) % 27 + 1) + "." + (Math.abs(new Random().nextInt()) % 12 + 1) + "." + (Math.abs(new Random().nextInt()) % 20 + 1980);

}

int getRandomMonthPay() {

return Math.abs(new Random().nextInt()) % 150 + 250;

}

}

class Worker {

String name;

String birthday;

int monthPay;

Worker(String name, String birthday, int monthPay) {

this.name = name; //this.**** - обращение к материнскому объекту

this.birthday = birthday;

this.monthPay = monthPay;

System.out.println(message());

}

void increaceMonthPay(double size) {

monthPay *= (1 + size);

System.out.println("Name: " + name + " month pay increace to: " + monthPay + "$");

}

String message() {

return "Name: " + name + " - worker, births at " + birthday + " month pay: " + getMonthPay() + "$";

}

int getMonthPay() { //возращает значение месячной зарплаты

return monthPay;

}

}

class Supervisor extends Worker{ //метод наследования

int monthPayCoeficient = 2;

Supervisor(String name, String birthday, int monthPay) {

super(name, birthday, monthPay);

super.name += " (supervisor)";

super.monthPay = monthPay * monthPayCoeficient;

}

@Override //анотация

String message() {

return "Name: " + name + " - supervisor, births at " + birthday + " month pay: " + getMonthPay() * 2 + "$";

}

}

Литература

1. Берд, Барри Java для чайников / Барри Берд. - М.: Диалектика / Вильямс, 2013. - 521 c.

2. Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей Гарнаев , Сергей Гарнаев. - Москва: СПб. [и др.] : Питер, 2017. - 718 c.

3. Гонсалвес, Энтони Изучаем Java EE 7 / Энтони Гонсалвес. - М.: Питер, 2016. - 640 c.

4. Гупта, Арун Java EE 7. Основы / АрунГупта. - М.: Вильямс, 2014. - 336 c.

5. Монахов, В. Язык программирования Java и среда NetBeans (+ CD-ROM) / В. Монахов. - М.: БХВ-Петербург, 2012. - 720 c.

6. Савитч, Уолтер Язык Java. Курс программирования / УолтерСавитч. - М.: Вильямс, 2015. - 928 c.

Размещено на Allbest.ru

...

Подобные документы

  • Методы реализации алгоритмов сортировки и алгоритмов поиска на языках программирования высокого уровня. Программирование алгоритмов сортировки и поиска в рамках создаваемого программного средства на языке Delphi. Создание руководства пользователя.

    курсовая работа [1,7 M], добавлен 16.04.2012

  • Понятие алгоритма и сортировки. Способы и алгоритмы сортировки массивов. Быстрая сортировка Хоара. Описание алгоритма "быстрой сортировки". Реализация на языке программирования. Анализ наихудшего разбиения. Вероятностные алгоритмы быстрой сортировки.

    курсовая работа [291,5 K], добавлен 22.03.2012

  • Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.

    курсовая работа [508,1 K], добавлен 10.11.2014

  • Обработка массивов элементов любого типа как главное назначение алгоритмов сортировки. Анализ наиболее используемых алгоритмов сортировки: пузырьком, выбором, вставками, методом Шелла и быстрой сортировкой. Основные требования к алгоритмам сортировки.

    реферат [189,8 K], добавлен 06.12.2014

  • Описание алгоритма сортировки с двоичным включением, выбор структур данных. Пример сортировки массива, отсортированного случайным образом. Алгоритм покрытия по методу "Построение одного кратчайшего покрытия". Волновой алгоритм поиска длиннейшего пути.

    курсовая работа [78,2 K], добавлен 24.09.2010

  • Реализация комплекса программ поиска подстроки в тексте алгоритмом прямого поиска и алгоритмом Кнута-Морриса-Пратта. Сравнительный анализ теоретических и экспериментальных оценок эффективности алгоритмов. Разработка структуры программы, ее листинг.

    курсовая работа [2,8 M], добавлен 22.01.2015

  • История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа [168,1 K], добавлен 27.09.2013

  • Обзор алгоритмов распознания объектов на двумерных изображениях. Выбор языка программирования. Обнаружение устойчивых признаков изображения. Исследование алгоритмов поиска объектов на плоскости. Модификация алгоритма поиска максимума дискретной функции.

    дипломная работа [1,0 M], добавлен 16.06.2013

  • Принцип работы Java. Аплеты как особенность Java-технологии, характеристика методов их защиты. Модель безопасности JDK1.2 и концепция "песочницы". Иерархия криптографических сервисов, алгоритмов. Объектная организация криптографической подсистемы Java.

    реферат [54,8 K], добавлен 09.09.2015

  • Изучение алгоритмов внутренней сортировки массивов данных, сравнение сложности их реализации и производительности. Отличительные черты сортировки включением, выбором, разделением, сортировки Шелла, обменной сортировки. Сравнение методов: плюсы и минусы.

    курсовая работа [203,8 K], добавлен 03.12.2010

  • Изучение символьных и строковых типов данных, алгоритма задачи на языке программирования Паскаль. Описания получения и установки отдельного символа строки, изменения регистра символов. Анализ создания и просмотра файла, поиска и сортировки информации.

    курсовая работа [440,7 K], добавлен 13.06.2011

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • Алгоритм сортировки Шейкер: математическое описание задачи и описание алгоритма. Алгоритм покрытия: построение одного кратчайшего покрытия. Описание схемы и работы алгоритма на графах: нахождение кратчайшего пути. Контрольные примеры работы алгоритмов.

    курсовая работа [43,8 K], добавлен 19.10.2010

  • Теоретические сведения об алгоритмах поиска подстроки в строке. Глобализация информации в сети Internet. Интеллектуальный поиск. Алгоритм последовательного (прямого) поиска, Рабина и их применение. Анализ алгоритмов. Реализация программного кода.

    курсовая работа [230,8 K], добавлен 12.02.2009

  • Исследование основных особенностей алгоритмов быстрой и поразрядной сортировки данных. Построение графиков зависимости времени сортировки от количества элементов в файле и от степени перемешенности элементов. Описания сортировки чисел и строковых данных.

    лабораторная работа [1,2 M], добавлен 23.07.2012

  • Организация возможности просмотра текстовых файлов и осуществления поиска нужных слов в тексте. Редактирование текста (шрифт, размер). Алгоритм поиска подстроки в строке (метод Кнута-Морриса-Пратта). Загрузка текста из файла (с расширением .txt).

    курсовая работа [2,2 M], добавлен 29.05.2013

  • Задачи компьютерного зрения. Анализ, разработка и реализация алгоритмов поиска и определения движения объекта, его свойств и характеристик. Алгоритмы поиска и обработки найденных областей движения. Метод коррекции. Нахождение объекта по цветовому диапазон

    статья [2,5 M], добавлен 29.09.2008

  • Характеристика структурированного языка программирования С, его основных структурных компонентов, области памяти, библиотеки. Методы поиска в массивах данных. Описание программы, функции сортировки и меню выбора, последовательного и бинарного поиска.

    курсовая работа [1,7 M], добавлен 19.05.2014

  • Исследование основных концепций информационного поиска: булева и векторная модели, индексные термины. Реализация векторной модели в среде Matlab, расчет ранжированных списков документов, реализация оценок качества поиска и листинг программы в Matlab.

    отчет по практике [444,8 K], добавлен 17.06.2012

  • Обоснование выбора метода извлечения ключевых слов. Анализ предметной области, проектирование информационной системы поиска релевантных документов. Реализация запросов к электронным библиотекам. Реализация интерфейса системы поиска релевантных документов.

    дипломная работа [1,1 M], добавлен 21.09.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.