Реализация алгоритмов поиска на языке 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Обработка массивов элементов любого типа как главное назначение алгоритмов сортировки. Анализ наиболее используемых алгоритмов сортировки: пузырьком, выбором, вставками, методом Шелла и быстрой сортировкой. Основные требования к алгоритмам сортировки.
реферат [189,8 K], добавлен 06.12.2014Сетевые возможности языков программирования. Преимущества использования Java-апплетов. Классы, входящие в состав библиотеки java.awt. Создание пользовательского интерфейса. Сокетное соединение с сервером. Графика в Java. Значения составляющих цвета.
курсовая работа [508,1 K], добавлен 10.11.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