Алгоритмізація та програмування задачі сортування даних
Алгоритм процедури сортування у порядку зростання елементів побічної діагоналі (зліва направо) за допомогою методу вибору мінімального елементу. Підрахунок та визначення кількості перестановок. Виведення масиву на лист MS Excel до та після перетворень.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | практическая работа |
Язык | украинский |
Дата добавления | 26.09.2013 |
Размер файла | 404,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Міністерство освіти та науки України
Національний технічний університет України
Київський політехнічний інститут
Розрахункова робота
з дисципліни:
Обчислювальна математика та програмування
На тему:
Алгоритмізація та програмування задачі сортування даних
Виконав: Савчук В.В.
Студент групи ХН-11
Перевірила: Абрамова A.O.
Київ 2012
Зміст
- Завдання
- Вступ
- Теоретичні відомості
- Блок схема
- Програма
- Результати роботи програми
- Список використаної літератури
- Індивідуальне завдання
- В масиві D(n*n) з довільними значеннями за допомогою методу вибору мінімального елементу відсортувати у порядку зростання елементи що знаходяться на побічній діагоналі (зліва направо). Підрахувати та навести кількість перестановок. Масив D вивести на лист MS Excel до та після перетворень. Навести проти кожного рядка елемент головної діагоналі, що належить йому.
Вступ
В даній розрахунково-графічній роботі я розробила алгоритм програми, яка знаходить у стовпчиках мінімальні елементи, та переставляє стовпці так, щоб вони відповідали порядку спадання найменших елементів кожного із стовпців та виводить кількість перестановок. Це створюється за допомогою сортування та окремих процедур
В стандартних модулях існують процедури загального призначення, які можуть бути викликані з будь-якого місця в програмі. Процедури загального призначення близькі до внутрішніх операторів та функцій. В Visual Basic вони викликаються за іменем, можуть мати аргументи і кожна з них виконує конкретні дії. Процедури загального призначення дозволяють економити час, роблять програми більш компактними, зручними в перегляді (прочитанні), спрощують роботу програм.
Теоретичні відомості
В стандартному модулі можна створити три види процедур загального призначення:
1. Процедури типу Function (функція). Такі процедури викликаються з інших процедур. Вони можуть мати аргументи, через які одержують вхідні значення також повертати значення у вигляді імені. Зазвичай використовуються для обчислень.
2. Процедури типу Sub (підпрограми). Вони також викликаються за ім'ям з інших процедур, можуть мати аргументи, одержувати вхідні значення, виконувати відповідні дії і повертати значення. На відміну від функцій процедури Sub використовуються для одержання або обробки вхідних даних і відображення вихідних даних або встановлення властивостей значень.
3. Процедури типу Property (Властивість). Такі процедури використовуються для створення властивостей, які визначаються користувачем у програмах, і маніпулювання ними. Це корисно, коли вимагається створити засіб, який дозволяє використовувати засоби управління Visual Basic.
Щоб набрати будь-яку процедуру загального призначення необхідно:
У меню Разработать вибрати команду Добавить модуль (Add Module).
Відкриється вікно Add Module. Вибрати Новый та натиснути кнопку Open (Открыть). У вікні Code з'явиться новий стандартний модуль.
Ввести в стандартному модулі текст процедури.
ПРОЦЕДУРИ ТИПУ FUNCTION
Синтаксис:
Function ім'я (х1 [As тип], х2 [As тип],... хn [As тип]) As Тип
блок операторів
ім'я = А
[оператори ]
[Exit Function ]
End Function
де ім'я - ідентифікатор функції;
x1, х2, х3..., хn - формальні параметри, які можуть бути:
1) змінними;
2) масивом;
Exit Function - достроковий вихід із процедури.
Звернення до функції здійснюється за ім'ям:
ім'я (а1,а2, ...,аn),
де а1, а2,..., аn - фактичні аргументи.
Фактичними аргументами можуть бути:
· змінні (прості та з індексами);
· масив;
· константа;
· арифметичний вираз.
· Дія:
· При зверненні до процедури:
· 1) формальні параметри визначаються фактичними аргументами;
· 2) виконується процедура, в якій ім'я приймає значення;
· 3) значення передається в головний модуль.
ПРОЦЕДУРИ ТИПУ SUB
Синтаксис:
Sub ім'я (х1 [As тип], х2 [As тип],... хn [As тип])
блок операторів
[Exit Sub ]
End Sub
де ім'я - довільний ідентификатор процедури;
x1, х2, х3,..., хn - формальні параметри, які умовно поділяються на 2 групи:
· параметри, що визначаються фактичними аргументами (при звернені до процедури)
· параметри, що визначають фактичні аргументи (після виконання процедури) і ті і інші можуть бути:
1) змінною;
2) масивом;
3) константою;
4) арифметичним виразом.
Exit Sub - достроковий вихід з процедури.
Звернення до процедури - функції здійснюється за допомогою оператора Call
Синтаксис:
Call ім'я(а1,а2, ...,аn),
де а1, а2,...,аn - фактичні аргументи.
Сортування масиву
Метою сортування масиву даних є їх упорядкування у відповідності до заданої умови. Найбільш частою умовою сортування даних є їх розташування за зростанням або за спаданням.
Типові алгоритми сортування:
Метод бульбашки
Ідея методу бульбашки полягає в послідовному порівнянні двох сусідніх елементів масиву. Якщо ці елементи не відповідають умові сортування, то їх значення міняються місцями. Перегляд елементів масиву виконується стільки разів, скільки потрібно для отримання повністю відсортованого масиву.
Метод вибору
Цей алгоритм сортування полягає у пошуку в масиві найбільшого (найменшого) елементу та в переміщенні його в початок або в кінець масиву. Потім процедура повторюється для інших елементів масиву за винятком елементу «вже встановленого на своє місце»
алгоритм сортування мінімальний елемент
Блок-схема
Код програми
Option Explicit
Sub Розрахункова_робота()
Dim i As Integer, j As Integer, n As Integer, c As String, a As Integer, b As
Integer, nomer As Integer, r As Integer, min As Integer, k As Integer
c = MsgBox("Очистити лист?", vbYesNo + vbQuestion, "Варіанти
виведення результату")
If c = vbYes Then Call cls
Open "d:/not.txt" For Output As #1
n = InputBox("Введіть розмір матриці", "Введення")
ReDim f(n, n) As Integer, t(n) As Integer
Call bform(f(), n, i, j)
Range("a1").Select
Cells(1, n / 2).Select
ActiveCell.Value = "Вихідний масив"
Print #1, "Вихідний масив"
ActiveCell.Offset(0, n / 2 + 4).Range("A1").Select
ActiveCell.Value = "Елементи головної діагоналі"
Cells(2, 2).Select
Call fprint(f(), n, i, j, a)
Range(Cells(2, 2), Cells(n + 1, n + 1)).Select
Call Границі
Call poshuk(i, j, f(), n, t())
k = ysort(n, t(), i, nomer, k, a, b, min, r)
Cells(n + 3, 2).Select
ActiveCell.Value = "Кількість перестановок елементів"
Print #1, " Кількість перестановок елементів "
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Value = k
Print #1, k
Cells(n + 5, n / 2).Select
ActiveCell.Value = "Кількість перестановок елементів"
Print #1, " Кількість перестановок елементів"
ActiveCell.Offset(0, n / 2 + 4).Range("A1").Select
ActiveCell.Value = " Масив після перетворень"
Cells(n + 6, 2).Select
Call fprint(f(), n, i, j, a)
Range(Cells(n + 6, 2), Cells(2 * n + 5, n + 1)).Select
Call Границі
Cells(n + 5, n + 2).Select
a = n + 2
b = n + 5
For i = 1 To n
a = a - 1
b = b + 1
Cells(b, a).Select
Selection.Interior.Color = 2551
ActiveCell.Value = t(i)
ActiveCell.Offset(0, 1).Range("A1").Select
Next
Range("a1").Select
Close
End Sub
Private Sub bform(f() As Integer, n, i, j)
Randomize Timer
For i = 1 To n
For j = 1 To n
f(i, j) = CInt(Rnd * 100 - 50)
Next
Next
End Sub
Private Sub fprint(f() As Integer, n, i, j, a)
For i = 1 To n
For j = 1 To n
a = f(i, i)
Print #1, f(i, j),
ActiveCell.Value = f(i, j)
ActiveCell.Offset(0, 1).Range("A1").Select
Next
Print #1,
ActiveCell.Offset(0, 2).Range("A1").Select
ActiveCell.Value = a
ActiveCell.Offset(0, -2).Range("A1").Select
ActiveCell.Offset(1, -n).Range("A1").Select
Next
End Sub
Private Sub poshuk(i, j, f() As Integer, n, t() As Integer)
For i = 1 To n
j = n - i + 1
Cells(i + 1, j + 1).Select
Selection.Interior.Color = 2551
t(i) = f(i, j)
Next
End Sub
Private Sub Границі()
Selection.Borders(xlEdgeLeft).Weight = xlMedium
Selection.Borders(xlEdgeRight).Weight = xlMedium
Selection.Borders(xlEdgeBottom).Weight = xlMedium
Selection.Borders(xlEdgeTop).Weight = xlMedium
Selection.Borders(xlInsideHorizontal).Weight = xlThin
Selection.Borders(xlInsideVertical).Weight = xlThin
End Sub
Private Sub cls()
Cells.Select
Selection.ClearContents
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Selection.Interior.Pattern = xlNone
Range("a1").Select
End Sub
Function ysort(n, t() As Integer, i, nomer, k, a, b, min, r)
k = 0
For i = 1 To n - 1
nomer = minimal(t(), i, min, nomer, r, n)
If i <> nomer Then
a = t(i)
b = t(nomer)
t(nomer) = a
t(i) = b
k = k + 1
End If
Next
ysort = k
End Function
Function minimal(t() As Integer, i, min, nomer, r, n)
min = t(i)
nomer = i
For r = i + 1 To n
If t(r) < min Then
min = t(r)
nomer = r
End If
Next
minimal = nomer
End Function
Результати роботи програми:
Список використаної літератури
1. Лекції з курсу інформаційних технологій
2. http://www.msoffice.nm.ru
3. http://www.mini-soft.ru/
4. Басков Н.Н. програмування в середовищі VBA
Размещено на Allbest.ru
Подобные документы
Схема алгоритму програми. Алгоритм процедури введення даних, виведення результатів сортування, побудови дерева, перестановки елементів, "вирішення сімейного конфлікту". Приклад для масиву з 20 елементів. Користувацьке вікно та побудова піраміди.
курсовая работа [3,0 M], добавлен 21.02.2011Мінімізація функції за методом карт Карно; розробка програм на мові асемблеру для Intel 8051: сортування масиву однобайтних даних у зовнішній пам’яті; формування послідовності прямокутних імпульсів; підрахунок кількості натискань на клавішу переривання.
курсовая работа [196,2 K], добавлен 14.04.2012Прості алгоритми сортування та їх програмування. Сортування вставками - алгоритм сортування на основі порівнянь. Злиття двох упорядкованих послідовностей (сортування злиттям). Ідея алгоритму швидкого сортування. Алгоритм сортування на основі порівнянь.
лабораторная работа [631,3 K], добавлен 19.08.2010Задача сортування даних в програмуванні. Алгоритм сортування обміном за критерієм або вибором, деревом, пірамідальне, швидке, сортування Хоара та метод цифрового сортування. Системні вимоги та інструкція для користувача. Алгоритм та лістинг програми.
курсовая работа [20,6 K], добавлен 08.08.2009Приклад реалізації крок за кроком методу сортування масивів "бульбашка", характеристика етапів. Графічне представлення методу, фрагмент програми його реалізації. Алгоритми сортування масивів методами вибору та вставок, опис особливостей їх реалізації.
презентация [824,2 K], добавлен 26.11.2014Регулярний тип даних мови Pascal, що дозволяє в програмі задавати структуру даних, яка називається масивом. Поняття одновимірного та багатовимірного масиву. Прямі методи сортування масивів, типи даних. Таблиця результативності гравців футбольної команди.
лекция [411,2 K], добавлен 24.07.2014Алгоритм сортування методом простого вибору. Знаходження найдовшого шляху в графі. Синтез машини Тюрінга, що розмічає послідовність чисел. Порівняння алгоритмів між собою за часом виконання і займаної пам'яті. Алгоритм пошуку мінімального елементу.
курсовая работа [90,3 K], добавлен 17.05.2011Характеристика швидкодії алгоритмів сортування масивів прямим і бінарним включенням, методами "бульбашки", "камінця", та шейкерного відбору, визначення їх переваг та недоліків. Огляд функцій сортування із стандартної бібліотеки мови програмування С++.
курсовая работа [452,1 K], добавлен 16.09.2010Вивчення можливостей інтегрованого середовища розробки програм Qt Creator. Ознайомлення з основами паралельних обчислень мовою програмування С++ в цьому середовищі. Переваги та конструкції OpenMP, сортування масиву злиттям. Тестування програми сортування.
курсовая работа [87,5 K], добавлен 28.10.2015Принцип роботи методів вибору, вставки з лінійним пошуком місця та шейкерного сортування для одновимірного випадку. Лістинг програми з коментарями. Порівняння результатів та часу сортування для різних станів масивів. Кількість переміщень елементів.
курсовая работа [311,9 K], добавлен 09.12.2013