Описание процедур, используемых в программе
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

UPOR процедура генерирует упорядоченный по возрастанию массив чисел
NOTUPOR процедура генерирует неупорядоченный (случайный) массив чисел
PR_CHOOSE процедура осуществляет сортировку методом прямого выбора
PR_INS процедура осуществляет сортировку методом прямой вставки
PR_OBM процедура осуществляет сортировку методом прямого обмена
MAKE процедура осуществляет исследование прямых методов сортировки
EXAMPLE процедура выполняет контрольный пример (сортировку методом прямого включения)

Текст программы

{$M 65000,65000,65000}

{Выделение памяти осуществляется для того, чтобы было возможно осуществлять исследование массива, содержащего 10000 элементов

***********************************************************

   Данная программа является курсовой работой по дисциплине

          'Структуры и алгоритмы обработки данных'

             на тему 'Прямые методы сортировки'

              В работе исследуются методы:

                     - прямого выбора;

                     - прямого обмена;

                     - прямой вставки.

Для исследования используются массивы из 10,100,100,10000 элементов.

**********************************************************}

{ использование модулей для осуществления вывода на экран }

uses crt,crtext,dcrt;***************************************************}

{** процедура, генерирующая упорядоченный по возрастанию массив чисел**}

{*********************************************************}

procedure upor(a:array of integer;var a1:array of integer);

var

{i - счетчик в циклах}

 i:integer;

begin

{первый элемент принимает значение 1}

a[0]:=1;

 for i:=1 to high(a) do

begin

{каждый последующий элемент принимает значение,

равное значению предыдущего элемента + случайное число}

a[i]:=a[i-1]+random(2);

end;

 for i:=0 to high(a) do

a1[i]:=a[i];

end;

{*********************************************************}

{** процедура, генерирующая не упорядоченный (случайный) массив чисел**}

{*********************************************************}

procedure notupor(a:array of integer;var a1:array of integer);

var

{i - счетчик в циклах}

 i:integer;

begin

 for i:=0 to high(a) do

begin {элемент массива принимает случайное значение из диапазона 0 <= a[i] < 9999}

a[i]:=random(9999);

end;

 for i:=0 to high(a) do

a1[i]:=a[i];

end;

{*********************************************************}

{***** процедура, осуществляющая сортировку методом прямого выбора***}

{*********************************************************}

procedure pr_choose(a:array of integer;var a1:array of integer;var k,k1:longint);

var

{i,j - счетчики в циклах}

 i,j:integer;

{x - переменная для осуществления обмена между a[i] и a[j]}

 x:integer;

begin

{k1 - переменная для подсчета количества сравнений

 k - переменная для подсчета количества перемещений}

      k:=0;k1:=0;

{high(a) - функция, возвращающая номер последнего элемента массива}

for i := 0 to high(a) - 1 do

begin

for j := i + 1 to high(a) do

begin

k1:=k1+1;

if a[i] < a[j] then

   begin

    k:=k+1;

{перестановка i-го с j-м элементом с помощью переменной x}

     x:=a[i];

     a[i]:=a[j];

     a[j]:=x;

   end;

end;

end;

for i:=0 to high(a) do

 a1[i]:=a[i];

end;

{**********************************************************

 ***** процедура, осуществляющая сортировку методом прямого *

 *************** обмена(метод пузырька) *********************

**********************************************************}

procedure pr_obm(a:array of integer;var a1:array of integer;var k,k1:longint);

var

{i,j - счетчики в циклах}

 i,j:integer;

{x - переменная для осуществления обмена между a[j-1] и a[j]}

 x:integer;

begin

{k1 - переменная для подсчета количества сравнений

 k - переменная для подсчета количества перемещений}

k:=0;k1:=0;

for i := 1 to high(a) do

 begin

for j := high(a) downto i do

begin

k1:=k1+1;

if a[j - 1] < a[j] then

begin

   k:=k+1;

{обмена содержимым элементов массива a[j-1] и a[j]

с помощью переменной x}

   x := a[j - 1];

   a[j - 1] := a[j];

   a[j] := x;

end;

end;

 end;

 for i:=1 to high(a) do

a1[i]:=a[i];

end;

{*********************************************************}

{*** процедура, осуществляющая сортировку методом прямого включения **}

{*********************************************************}

procedure pr_ins(a:array of integer;var a1:array of integer;var k,k1:longint);

var

{i,j - счетчики в циклах}

 i,j:integer;

{x - переменная для осуществления обмена между a[i] и a[j]}

 x:integer;

begin

{k1 - переменная для подсчета количества сравнений

 k - переменная для подсчета количества перемещений}

k:=0;k1:=0;

for i := 1 to high(a) do

begin

x := a[i];

for j := i - 1 downto 0 do

begin

k1:=k1+1;

if x > a[j] then

               begin

                k:=k+1;

{обмена содержимым элементов массива a[j+1] и a[j]

с помощью переменной x}

                a[j + 1] := a[j];

                a[j]:=x;

               end;

end;

end;

for i:=0 to high(a) do

a1[i]:=a[i];

end;

{**********************************************************

   процедура, осуществляющая исследование методов сортировок для

 *********** заданного массива чисел ***********************

**********************************************************}

procedure make(x1,n:integer;a,a1:array of integer;k:byte);

var

{количество перестановок}

 kol_pr_ins, kol_pr_obm,kol_pr_choose:longint;

{количество сравнений}

 kol_sr_ins, kol_sr_obm,kol_sr_choose:longint;

s:string;

begin

case k of

1:s:='упорядоченных по возрастанию';

2:s:='неупорядоченных (случайных)';

3:s:='упорядоченных по убыванию';

end;

{--------метод прямого включения---------}

pr_ins(a,a1,kol_pr_ins,kol_sr_ins);

{--------метод прямого обмена (метод пузырька)--------}

pr_obm(a,a1,kol_pr_obm,kol_sr_obm);

{---------метод прямого выбора----------}

pr_choose(a,a1,kol_pr_choose,kol_sr_choose);

{** вывод результата исследования **}

{вывод шапки таблицы}

gotoxy(3,x1);textcolor(cyan);textbackground(1);

writeln('Для ',high(a)+1,' ',s,' элементов:');

gotoxy(3,x1+1);textcolor(lightgreen);textbackground(1);

writeln('Методы: прямого включения прямого обмена прямого выбора');

{вывод полученных при исследовании данных}

gotoxy(3,x1+2);textcolor(white);write('перест.');

gotoxy(17,wherey);write(kol_pr_ins);

gotoxy(37,wherey);write(kol_pr_obm);

gotoxy(58,wherey);writeln(kol_pr_choose);

gotoxy(3,x1+3);write('сравн.');

gotoxy(17,wherey);write(kol_sr_ins);

gotoxy(37,wherey);write(kol_sr_obm);

gotoxy(58,wherey);writeln(kol_sr_choose);

str(high(a)+1,s);box(1,19,80,24,1,15,double,s+' элементов');

 gotoxy(4,20);write('Сортировка ',s,' элементов по убыванию');

 gotoxy(4,21);write('Сортируются ',s,' упорядоченных(по возрастанию) элементов');

 gotoxy(4,22);write('Сортируются ',s,' неупорядоченных(случайных) элементов');

 textbackground(lightgray);

 textcolor(red);gotoxy(3,25);write('Esc - главное меню');

end;

{*********************************************

 Пример сортировки методом прямого включения

 Дан массив записей, содержащий:

      -имя студента;

      -кол-во баллов (рейтинг).

Необходимо отсортировать данный массив по

убыванию количества баллов у студента.

*********************************************}

procedure example;

type

{rec - запись, содержащая:

            name - имя студента;

            num - кол-во баллов (рейтинг).}

 rec=record

name:string;

num:byte;

   end;

var

{mas - массив записей rec}

 mas:array[1..20] of rec;

{счетчики в циклах}

 i,j:integer;

 x:rec;

{переменные для подсчета количества сравнений и перемещений

 во время сортировки}

 k_sr,k_p:integer;

 key:char;

begin

{переменные для подсчета количества сравнений и перемещений

 во время сортировки}

 k_sr:=0;k_p:=0;

randomize;

{Данный массив, содержащий имена студентов}

mas[1].name:='Иван';mas[2].name:='Петр';mas[3].name:='Сидор';

mas[4].name:='Василий';mas[5].name:='Денис';mas[6].name:='Геннадий';

mas[7].name:='Борис';mas[8].name:='Марат';mas[9].name:='Казбек';

mas[10].name:='Алексей';mas[11].name:='Владимир';mas[12].name:='Сидор';

mas[13].name:='Виталий';mas[14].name:='Александр';mas[15].name:='Михаил';

mas[16].name:='Евгений';mas[17].name:='Артур';mas[18].name:='Руслан';

mas[19].name:='Мурат';mas[20].name:='Аркадий';

{задание количества баллов у студента случайным образом}

for i:=1 to 20 do

 mas[i].num:=random(19)+1;

{вывод пояснений}

getshadow;

textbackground(lightgray);

textcolor(red);gotoxy(15,1);write('Пример сортировки по убыванию методом прямого включения');

textbackground(lightgray);

textcolor(red); gotoxy(3,25); write('Esc - главное меню');

textcolor(red); gotoxy(65,25); write('F1 - задание');

box(58,0,80,25,1,15,double,'Статистика');

textcolor(lightmagenta);

gotoxy(59,3); write(' Сортировка методом ');

gotoxy(61,4); write('прямого включения.');

textcolor(white); gotoxy(59,5); write('---------------------');

box(31,0,57,25,1,15,double,'После сортировки');

textcolor(lightmagenta); gotoxy(32,3); write(' N Имя      балл');

box(1,0,30,25,1,15,double,'До сортировки');

textcolor(lightmagenta); gotoxy(3,3); write('N Имя         балл');

{вывод на экран исходного массива}

for i:=1 to 20 do

 begin

textcolor(lightcyan); gotoxy(3,i+3); write(i);

textcolor(yellow); gotoxy(7,i+3); write(mas[i].name);

textcolor(lightred); gotoxy(25,i+3); writeln(mas[i].num);

 end;

{сортировка по убыванию количества баллов}

for i := 2 to 20 do

begin

x := mas[i];

for j := i - 1 downto 1 do

begin

{k_sr - счетчик количества сравнений}

k_sr:= k_sr+1;

     if x.num > mas[j].num then

               begin

{k_p - счетчик количества перемещений}

               k_p:=k_p+1;

{обмена содержимым элементов массива mas[j+1] и mas[j]

с помощью переменной x}

                mas[j + 1] := mas[j];

               mas[j]:=x;

               end;

end;

end;

 

{вывод на экран отсортированного массива}

for i:=1 to 20 do

 begin

textcolor(lightcyan); gotoxy(33,i+3); write(i);

textcolor(yellow); gotoxy(37,i+3); write(mas[i].name);

textcolor(lightred); gotoxy(52,i+3); writeln(mas[i].num);

 end;

{вывод на экран количества сравнений и перестановок

 в массиве, осуществленных во время сортировки}

 textcolor(lightgreen); gotoxy(61,6); write('Сравнений:');

 textcolor(lightgray); gotoxy(75,6); write(k_sr);

 textcolor(lightgreen); gotoxy(61,8); write('Перестановок:');

 textcolor(lightgray); gotoxy(75,8); write(k_p);

repeat

key:=' '; if keypressed then key:=readkey;

  case key of

{#59 - код клавиши F1}

#59:begin

{вывод окна с заданием для контрольного примера}

{putshadow+box - вывод окна с тенью}

putshadow(15,7,65,15);box(15,7,65,15,lightgray,0,double,'Задание');

    textcolor(red);

    gotoxy(21,9); write('Дан список, содержащий фамилии студентов');

    gotoxy(21,10); write('и их рейтинговые баллы. Необходимо от-');

    gotoxy(21,11); write('сортировать данный список по убыванию ');

    gotoxy(21,12); write('рейтинговых баллов.');

    textcolor(yellow);gotoxy(50,15);write('Enter - отмена');

   end;

{#13 - код клавиши Enter}

#13:getshadow;

end;

{#27 - код клавиши Esc}

until key=#27;

end;

{**********************************************************

************************ Основная программа **************

**********************************************************}

const

{массив строк - пунктов главного меню}

 menu:array[1..7] of string=(' Пример сортировки ',' Исследование (10 эл-тов)',

                       ' Исследование (100 эл-тов) ',

                        ' Исследование (1000 эл-тов) ',

                        ' Исследование (10000 эл-тов) ',

                        ' О программе '

                        ,' Выход ');

var

{массивы чисел, используемые для исследования}

 a,a1:array[0..9] of integer; {10 - чисел}

 b,b1:array[0..99] of integer; {100 - чисел}

 c,c1:array[0..999] of integer; {1000 - чисел}

 d,d1:array[0..9999] of integer; {10000 - чисел}

 f:byte;                    {показатель того , какой массив

                             поступает в процедуру для упо-

                             рядочивания по убыванию:

                              1 - неупорядоченный (слу-

                                         чайный);

                              2 - упорядоченный по воз-

                                      растанию;

                              3 - упорядоченный по убы-

                                      ванию}.

 k:char;

 item:byte;

begin

clrscr;cursoroff; {гашение курсора}

repeat

textbackground(0);clrscr;

{fill - процедура, заполняющая заданную область экрана заданными символами заданного цвета}

fill(lightgray,1,1,2,80,25,' ');

{menuv - процедура, выводящая на экран вертикальное меню}

menuv(25,10,menu,lightgray,black,red,lightgreen,yellow,'Сортировка',item,double);

{item - переменная, содержащая номер выбранного пункта меню}

case item of

1:example;

2:begin

  {getshadow - процедура, убирающая тень от меню}

     getshadow;

  {** исследуются 10 упорядоченных по возрастанию элементов **}

  {box - процедура, выводящая на экран окно}

      box(1,0,80,18,1,15,double,'10 элементов');

  {вызов процедуры upor, генерирующей упорядоченный по возрастанию

   массив чисел}

      upor(a,a);

  {вызов процедуры make, осуществляющей исследование методов сортировки}

      make(3,10,a,a1,1);

  {** исследуются 10 неупорядоченных (случайных) элементов **}

  {вызов процедуры notupor, генерирующей неупорядоченный(случайный) массив чисел}

     notupor(a,a);

  {вызов процедуры make, осуществляющей исследование методов сортировки}

     make(8,10,a,a1,2);

  {** исследуются 10 упорядоченных по убыванию элементов **}

  {вызов процедуры make, осуществляющей исследование методов сортировки}

     make(13,10,a1,a1,3);

  {ожидание нажатия клавиши Esc}

repeat

k:=readkey;

until k=#27;

end;

3:begin

  {getshadow - процедура, убирающая тень от меню}

  getshadow;

  {box - процедура, выводящая на экран окно}

  box(1,0,80,18,1,15,double,'100 элементов');

{исследуются 100 упорядоченных по возрастанию элементов}

    upor(b,b);

    make(3,100,b,b1,1);

{исследуются 100 неупорядоченных (случайных) элементов}

     notupor(b,b);

     make(8,100,b,b1,2);

  {исследуются 100 упорядоченных по убыванию элементов}

     make(13,100,b1,b1,3);

repeat k:=readkey; until k=#27;

end;

4:begin

  {getshadow - процедура, убирающая тень от меню}

  getshadow;

  box(1,0,80,18,1,15,double,'1000 элементов');

 {исследуется 1000 упорядоченных по возрастанию элементов}

upor(c,c);

make(3,1000,c,c1,1);

 {исследуется 1000 неупорядоченных (случайных) элементов}

notupor(c,c);

make(8,1000,c,c1,2);

 {исследуется 1000 упорядоченных по убыванию элементов}

make(13,1000,c1,c,3);

repeat

k:=readkey;

until k=#27;

end;

5:begin

  getshadow;

   box(1,0,80,18,1,15,double,'10000 элементов');

 {исследуются 10000 упорядоченных по возрастанию элементов}

upor(d,d);

make(3,10000,d,d1,1);

 {исследуются 10000 неупорядоченных (случайных) элементов}

notupor(d,d);

make(8,10000,d,d1,2);

{исследуются 10000 упорядоченных по убыванию элементов}

make(13,10000,d1,d,3);

repeat

k:=readkey;

until k=#27;

end;

6:begin

  {getshadow - процедура, убирающая тень от меню}

  getshadow;

  {ввод окна с темой курсовой работы}

  box(10,5,70,15,lightgray,0,double,'О программе');

  putshadow(10,5,70,15);

  textcolor(brown);

  gotoxy(12,7);write('Данная программа является курсовой работой по дисциплине');

  gotoxy(21,8);write('"Алгоритмы и структуры обработки данных"');

  gotoxy(30,9);write('Тема курсовой работы: ');

  gotoxy(18,10);write(' "Исследование прямых методов сортировки"');

  gotoxy(17,11);write('Курсовую работу выполнили студенты группы 95-ОА-21');

    textcolor(red);gotoxy(3,25);write('Esc - главное меню');

repeat

k:=readkey;

until k=#27;

end;

end;

until item=7;

end.

{*********************конец программы********************}



Заключение

 

В учебном пособии были рассмотрены наиболее распространенные оперативные структуры данных и алгоритмы их обработки, которые традиционно применяются при создании программных систем и комплексов. В силу ограниченности объемом курса не было уделено внимания таким структурам, как В - деревья и графы, в разделе поиска опущен раздел хеширования. Однако, на базе уже рассмотренного материала эти разделы могут быть легко изучены самостоятельно.

Современное состояние и тенденции развития вычислительной техники как основного инструмента информатики таковы, что наряду с увеличением функциональности вычислительная техника приобретает свойства, позволяющие работать на ней пользователю, не разбирающемуся в программировании. Бурно развиваются в последнее время локальные, корпоративные и глобальные вычислительные сети. Создаются мощные накопители данных. Другими словами, основные процессы информационных технологий (обработка, обмен и накопление данных) поднялись на следующую ступень, что, естественно, требует новых подходов к организации данных в ЭВМ и созданию соответствующих систем программирования. Определяющими факторами к этому являются современные требования к пользовательскому интерфейсу и мультимедийные системы. Появились структкры графических данных и более крупные, интегральные информационные единицы - объекты. Следствием явилось бурное развитие объектно-ориентированных систем программирования: Visual BASIC, Visual PASCAL, Visual C ++ и т.д., используемых для создания программ, в основе которых лежит обработка объектных структур данных. Обмен объектными структурами в сетях вызван развитием сетевых операционных систем: Intranetware, Solaris, Windows NT и т.д. Обработка данных на многопроцессорных вычислительных системах потребовала создания новых структур данных, основанных на абстрактных представлениях и новых языков программирования: Modula 2, ADA, OCCAM.

Таким образом, развитие информационных технологий, их проникновение во все области жизнедеятельности человека требуют компьютерного отображения информации в виде соответствующих структкр данных и, естественно, каждый новый поступаельный шаг информатики будет сопровождаться соответсвующим шагом в области структур данных.


 


Литература

1. Бертисс А.Т. Структуры данных./Пер.с англ.- М.:Статистика,1974.

2. Вирт Н. Алгоритмы и структуры данных.- М.: Мир,1989.

3. Д. Райли. Абстракция и структуры данных. Вводный курс. М.: Мир, 1993.

4. Костин А.Е.,Шаньгин В.Ф. Организация и обработка структур данных в вычислительных системах.- М.: Высшая школа,1987.

5. Ленгсам и др. Структуры данных для персональных ЭВМ. - М.: Мир, 1989.

6. Трамбле Ж., Соренсон П. Введение в структуры данных. - М.: Машиностроение, 1982.

 


приложение.
Тесты с ответами

 

Лабораторная работа 1. Полустатические структуры данных (стеки).

 

6. В чём особенности очереди ?

- открыта с обеих сторон (верный);

- открыта с одной стороны на вставку и удаление;

- доступен любой элемент.

7. В чём сосбенности стека ?

- открыт с обеих сторон на вставку и удаление;

- доступен любой элемент;

- открыт с одной стороны на вставку и удаление (верный).

8. Какую дисциплину обслуживания принято называть FIFO ?

- стек;

- очередь (верный);

- дек.

9. Какая операция читает верхний элемент стека без удаления ?

- pop;

- push;

- stackpop (верный).

10. Каково правило выборки элемента из стека ?

- первый элемент;

- последний элемент (верный);

- любой элемент.

 

Лабораторная работа 2.Списковые структуры данных (односвязные очереди).

 

6. Как освободить память от удаленного из списка элемента ?

- p=getnode;

- ptr(p)=nil;

- freenode(p) (верный);

- p=lst.

7. Как создать новый элемент списка с информационным полем D ?

- p=getnode;

- p=getnode; info(p)=D (верный);

- p=getnode; ptr(D)=lst.

8. Как создать пустой элемент с указателем p ?

- p=getnode (верный);

- info(p);

- freenode(p);

- ptr(p)=lst.

9. Сколько указателей используется в односвязных списках ?

- 1 (верный);

- 2;

- сколько угодно.

10. В чём отличительная особенность динамических объектов ?

- порождаются непосредственно перед выполнением программы;

- возникают уже в процессе выполнения программы (верный);

- задаются в процессе выполнения программы.

 

Лабораторная работа 3.Списковые структуры данных.

6. При удалении элемента из кольцевого списка…

- список разрывается;

- в списке образуется дыра;

- список становится короче на один элемент (верный).

7. Для чего используется указатель в кольцевых списках ?

- для ссылки на следующий элемент;

- для запоминания номера сегмента расположения элемента;

- для ссылки на предыдущий элемент (верный);

- для расположения элемента в списке памяти.

8. Чем отличается кольцевой список от линейного ?

- в кольцевом списке последний элемент является одновременно и первым;

- в кольцевом списке указатель последнего элемента пустой;

- в кольцевых списках последнего элемента нет (верный);

- в кольцевом списке указатель последнего элемента не пустой.

9. Сколько указателей используется в односвязном кольцевом списке ?

- 1(верный);

- 2;

- сколько угодно.

10. В каких направлениях можно перемещаться в кольцевом двунаправленном списке ?

- в обоих (верный);

- влево;

- вправо.

 

Лабораторная работа 4. Модель массового обслуживания.

6. Чем отличается заявка первого приоритета от заявки второго приоритета ?

- тем, что заявка второго приоритета обслуживается с вероятностью P=1, а заявка первого приоритета обслуживается с вероятностью P(B);

- тем, что заявка второго приоритета становится в начало очереди, а первого приоритета становится в конец очереди (верный);

- ничем, если есть очередь.

7. Может ли заявка первого приоритета вытеснить из очереди заявку второго приоритета ?

- да, если P(B)=1;

- да;

- нет (верный).

8. Может ли на обслуживании находится заявка первого приоритета, если в очереди находится заявка второго приоритета ?

- да, если P(B)=1;

- да (верный);

- нет.

9. С помощью какой структуры данных наиболее рационально реализовать очередь ?

- стек;

- список (верный);

- дек.

10. Когда заявка покидает систему. Найдите ошибку.

- если заявка обслужилась подложенное ей число тактов;

- если заявка находится в очереди больше Т тактов;

- если заявок второго приоритета стало больше, чем заявок первого приоритета (верный).

 

Лабораторная работа 5. Бинарные деревья (основные процедуры).

6. Для включения новой вершины в дерево нужно найти узел, к которому её можно присоединить. Узел будет найден, если очередной ссылкой, определяющей ветвь дерева, в которой надо продолжать поиск, окажется ссылка:

- p=right(p);

- p=nil (верный);

- p=left(p).

7. Для написания процедуры над двумя деревьями необходимо описать элемент типа запись, который содержит поля:

- Element=Запись

Left,Right : Указатели

Rec : Запись;

 

- Element=Запись

Left : Указатель

Key : Ключ

Rec : Запись;

 

- Element=Запись (верный)

Left, Right : Указатели

Кеу : Ключ

Rec : Запись.

 

8. В памяти ЭВМ бинарное дерево удобно представлять в виде:

- связанных линейных списков;

- массивов;

- связанных нелинейных списков (верный).

9. Элемент t, на котрый нет ссылок:

- корнем (верный);

- промежуточным;

- терминальным (лист).

10. Дерево называется полным бинарным, если степень исходов вершин равна:

- 2 или 0 (верный);

- 2;

- М или 0;

- M.

 

Лабораторная работа 6. Сортировка методом прямого включения.

6. Даны три условия окончания просеивания при сортировке прямым включением. Найдите среди них лишнее.

- найден элемент a(i) с ключом, меньшим чем ключ у x;

- найден элемент a(i) с ключом, большим чем ключ у x (верный);

- достигнут левый конец готовой последовательности.

7. Какой из критериев эффективности сортировки определяется формулой M=0,01*n*n+10*n ?

- число сравнений (верный);

- время, затраченное на написание программы;

- количество перемещений;

- время, затраченное на сортировку.

8. Как называется сортировка, происходящая в оперативной памяти ?

- сортировка таблицы адресов;

- полная сортировка;

- сортировка прямым включением;

- внутренняя сортировка (верный);

- внешняя сортировка.

9. Как можно сократить затраты машинного времени при сортировке большого объёма данных ?

- производить сортировку в таблице адресов ключей (верный);

- производить сортировку на более мощном компьютере;

- разбить данные на более мелкие порции и сортировать их.

10. Существуют следующие методы сортировки. Найдите ошибку.

- строгие;

- улудшенные;

- динамические (верный).

 

Лабораторная работа 7. Сортировка методом прямого выбора.

 

6. Метод сортировки называется устойчивым, если в процессе сортировки…

- относительное расположенние элементов безразлично;

- относительное расположение элементов с равными ключами не меняется (верный);

- относительное расположение элементов с равными ключами изменяется;

- относительное расположение элементов не определено.

7. Улучшенные методы имеют значительное преимущество:

- при большом количестве сортируемых элементов (верный);

- когда массив обратно упорядочен;

- при малых количествах сортируемых элементов;

- во всех случаях.

8. Что из перечисленных ниже понятий является одним из типов сортировки ?

- внутренняя сортировка (верный);

- сортировка по убыванию;

- сортировка данных;

- сортировка по возрастанию.

9. Сколько сравнений требует улучшенный алгоритм сортировки ?

- n*log(n) (верный);

- en;

- n*n/4.

10. К какому методу относится сортировка, требующая n*n сравнений ключей ?

- прямому (верный);

- бинарному;

- простейшему;

- обратному.

 

Лабораторная работа 8. Сортировка с помощью прямого обмена.

 

6. Сколько сравнений и пeрестановок элементов требуется в пузырьковой сортировке ?

- n*lon(n);

- (n*n)/4 (верный);

- (n*n-n)/2.

7. Сколько дополнительных переменных нужно в пузырьковой сортировке помимо массива, содержащего элементы ?

- 0 (не нужно);

- всего 1 элемент (верный);

- n переменных (ровно столько, сколько элементов в массиве).

8. Как рассортировать массив быстрее, пользуясь пузырьковым методом ?

- одинаково (верный);

- по возрачстанию элементов;

- по убыванию элементов.

9. В чём заключается идея метода QuickSort ?

- выбор 1,2,…n – го элемента для сравнения с остальными;

- разделение ключей по отношению к выбранному (верный);

- обмен местами между соседними элементами.

10. Массив сортируется “пузырьковым” методом. За сколько проходов по массиву самый “лёгкий” элемент в массиве окажется вверху ?

- за 1 проход (верный);

- за n-1 проходов;

- за n проходов, где n – число элементов массива.

 

Лабораторная работа 9. Сортировка с помощью дерева.

 

6. При обходе дерева

 

слева направо получаем последовательность…

- отсортированную по убыванию;

- неотсортированную (верный);

- отсортированную по возрастанию.

7. Какое из трёх деревьев не является строго сбалансированным ?

- A;

- B(верный);

- C.

8. При обходе дерева слева направо его элемент заносится в массив…

- при втором заходе в элемент (верный);

- при первом заходе в элемент;

- при третьем заходе в элемент.

9. Элемент массива с ключом k=20 необходимо вставить в изображённое дерево так, чтобы дерево осталось отсортированным. Куда его нужно вставить ?

- левым сыном элемента 30 (верный);

- левым сыном элемента 41;

- левым сыном элемента 8.

10. При обходе какого дерева слева направо получается отсортированный по возрастанию массив ?

- A;

- B;

- C (верный).

 

Лабораторная работа 10. Исследование методов линейного и бинарного поиска.

 

6. Где эффективен линейный поиск ?

- в списке;

- в массиве;

- в массиве и в списке (верный).

7. Какой поиск эффективнее ?

- линейный;

- бинарный (верный);

- без разницы.

8. В чём суть бинарного поиска ?

- нахожденние элемента массива x путём деления массива пополам каждый раз, пока элемент не найден (верный);

- нахождение элемента x путём обхода массива;

- нахождение элемента массива х путём деления массива.

9. Как расположены элементы в массиве бинарного поиска ?

- по возрастанию (верный);

- хаотично;

- по убыванию.

10. В чём суть линейного поиска ?

- производится последовательный просмотр от начала до конца и обратно через 2 элемента;

- производится последовательный просмотр элементов от середины таблицы;

- производится последовательный просмотр каждого элемента (верный).

 

Лабораторная работа 11. Исследование методов поиска с перемещением в начало и транспозицией.

 

6. Где наиболее эффективен метод транспозиций ?

- в массивах и в списках (верный);

- только в массивах;

- только в списках.

7. В чём суть метода перестановки ?

- найденный элемент помещается в голову списка (верный);

- найденный элемент помещается в конец списка;

- найденный элемент меняется местами с последующим.

8. В чём суть метода транспозиции ?

- перестановка местами соседних элементов;

- нахождение одинаковых элементов;

- перестановка найденного элемента на одну позицию в сторону начала списка (верный).

9. Что такое уникальный ключ ?

- если разность значений двух данных равна ключу;

- если сумма значений двух данных равна ключу;

- если в таблице есть только одно данное с таким ключом (верный).

10. В чём состоит назначение поиска ?

- среди массива данных найти те данные, которые соответствуют заданному аргументу (верный);

- определить, что данных в массиве нет;

- с помощью данных найти аргумент.

 

Лабораторная работа 12. Поиск по дереву с включением.

 

6. В каком дереве при бинарном поике нужно перебрать в среднем N/2 элементов ?

 

 

- A;

- B (верный);

- C.

7. Сколько нужно перебрать элементов в сбалансированном дереве ?

E) N/2;

F) Ln(N);

G) Log2(N);

H) eN.

- A;

- B;

- C (верный);

- D.

8. Выберете вариант дерева, полученного после вставки узла -1.

- A (верный);

- B;

- C.

9. К какому элементу присоединить элемент 40 для вставки его в данное дерево ?

 

 

- к 30-му (верный);

- к 15-му;

- к –15-му;

- к 5-му.

10. Какой вид примет дерево после встаки элемента с ключом 58 ?

- A (верный);

- B;

- C.

 

Лабораторная работа 13. Поиск по дереву с исключением.

 

6. Выберете вариант дерева, полученного после удаления узла –3.

- A;

- B (верный);

- C.

 

7. Какой вариант дерева получится после удаления элемента –1, а затем –8 ?

- A;

- B (верный);

- C.

8. Выберете вариант дерева, полученного после удаления узла с индексом 0.

- A (верный);

- B;

- C.

9. Какие из следующих пар чисел могут стать корнями дерева после удаления элемента 10 в соответсвии с двумя способами удаления узла, имеющего двух сыновей ?

- 0 или 15;

- 0 или 20;

- 5 или 30;

- 5 или 15 (верный).

10. Какой вид примет дерево после удаления элемента с ключом 58 ?

- A (верный);

- B;

- C.

 


 

Лойко Валерий Иванович

Лаптев Сергей Владимирович




Структуры и алгоритмы

Обработки данных

(электронное издание)

 

Учебное пособие для вузов

 

 

Авторская правка

 

350044, Краснодар, Калинина, 13

 

Дата: 2019-12-10, просмотров: 263.