Алгоритмы поиска и сортировки данных

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

производится проверка на отсортированность списка данных. Если список не отсортирован, то применения метода невозможно и производится вывод соответствующего сообщения. Это проиллюстрировано следующим фрагментом кода:

flag := true;

for i := 1 to kol-1 do

beginmas[i] > mas[i+1] then:= false;;;;flag then

………………………………………………………(Данные не отсортированы! Поиск невозможен!, mtWarning, [mbOK], 0);

Если же список отсортирован, то производится поиск:

mas[mid]then:=mid+1:=true;;">str := LE_Shablon.Text;:= 1;:= kol;:= false;(low mas[mid] then:= mid+1:=true;;

Для определения удачности поиска используется булева переменная found. Если она равна true - значит поиск удачен. В таком случае найденная строка выделяется в правой части формы, иначе выводится соответствующее сообщение:

if found then.SelStart := Memo2.Perform(EM_LINEINDEX, mid-1, 0);.SelLength := Length(Memo2.Lines[mid-1]);.SetFocus;(Шаблон поиска не найден!,mtWarning,[mbOK],0);

При поиске подстрок аналогично производится проверка на наличие списка данных и ключа поиска. Затем выполняется сам поиск:

str := LE_Shablon.Text;

m := Length(str);

for k := 1 to kol do:= Length(temp[k]);i := 1 to n-m+1 do:= 0;(j < m) and (str[j+1] = temp[k, i+j]) do(j);j = m then:= true;;;;flag then;

Для определения удачности поиска используется булева переменная flag. Если она равна true - значит поиск удачен. В таком случае найденная строка выделяется в правой части формы, иначе выводится соответствующее сообщение:

if flag then.SelStart := Memo1.Perform(EM_LINEINDEX,k-1,0)+i-1;.SelLength := m;.SetFocus;(Шаблон поиска не найден!,mtWarning,[mbOK],0);

 

3.2 Руководство пользователя

 

После запуска программы на исполнение в экране появляется главная форма, которая показана на рис. 3.2. (Приложение 3).

Данная форма состоит из трех частей:

область для ввода данных, предназначенных для сортировки или поиска (расположена слева),

область, на которой размещены все кнопки, которые отвечают за выполнение определенных действий в программе (расположена посередине),

область для вывода результатов сортировки или поиска (расположена справа).

Область с кнопками в свою очередь состоит из трех основных элементов:

кнопки Принять данные,

панели Сортировка данных,

панели Поиск данных.

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

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

При запуске программы доступной является только одна кнопка - Принять данные. Все остальные кнопки и переключатель Показать время сортировки изначально недоступны.

После ввода данных необходимо нажать кнопку Принять данные. Если при этом пользователь забыл ввести данные в левое поле, то программа выдаст предупреждение, показанное на рис 3.3.

 

Рис. 3.3. Предупреждение об отсутствии данных

 

Если данные были введены, то программа их принимает и происходит разблокировка всех остальных кнопок и переключателя Показать время сортировки. Это показано на рис. 3.4.

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

Начнем с сортировки. Программа предоставляет возможность использовать пять алгоритмов сортировки:

сортировку выбором;

сортировку пузырьком;

сортировку вставками;

сортировку подсчетом;

сортировку Шелла.

 

Рис.3.4. Главная форма после ввода данных

 

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

Пример такого сообщения показан на рис. 3.5.

 

Рис.3.5. Сообщение со временем сортировки

 

Результат сортировки выводится в правую часть формы, как это показано на рис. 3.6.

 

Рис.3.6. Главная форма с результатами сортировки

 

При необходимости можно ввести новые данные и выполнить сортировки для них.

Если у пользователя есть желание, он может сравнить используемые в программе алгоритмы сортировки по быстродействию. Для этого ему надо несколько раз отсортировать одни и те же данные, используя разные алгоритмы. Однако следует помнить, что перед вторым и более использованием сортировки для одних и тех же данных, необходимо нажимать кнопку Принять данные.

Это необходимо для того, чтоб второй, третий и т.д. разу алгоритм начинал работы со списком, который имеет такой же вид, как и данные введенные в левой части формы. Если этого не делать, то при втором, третьем и т.д. вызове сортировки программа будет работать с данными, которые уже были отсортированы предыдущим алгоритмом, что не позволит корректно сравнить алгоритмы между собой, так как они будут находиться в неравных условиях - первый алгоритм будет иметь дело с неотсортированным списком, а все остальные - с уже отсортированным.

Теперь рассмотрим поиск данных.

Программа предоставляет возможность использовать три алгор