Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Приложения.doc
Скачиваний:
6
Добавлен:
09.11.2019
Размер:
374.78 Кб
Скачать

Библиотека функций сортировки массивов

/*

Функции сортировки массивов

Сохраните этот текст в файле с именем arr_sort.h. Поместите

этот файл в каталог проекта и в тексте программы используйте директиву

#include " arr_sort.h"

*/

#pragma once

#include "stdafx.h"

#include <iostream>

#include <iomanip>

#include "my_rand.h"

using namespace std;

//

// Прототипы функций

//

void Sort1_1(double A[], int n, bool Inc);

// Сортировка методом "пузырька" (вариант 1)

// A - сортируемый массив

// n - количество элементов в массиве

// Inc - порядок сортировки (true - по возрастанию)

void Sort1_2(double A[], int n, bool Inc);

// Сортировка методом "пузырька" (вариант 2)

// A - сортируемый массив

// n - количество элементов в массиве

// Inc - порядок сортировки (true - по возрастанию)

void Sort1_2(int A[], int n, bool Inc);

// Сортировка методом "пузырька" (вариант 2)

// A - сортируемый массив

// n - количество элементов в массиве

// Inc - порядок сортировки (true - по возрастанию)

void Sort2(double A[], int n, bool Inc);

// Сортировка методом обмена

// A - сортируемый массив элементами типа double

// n - количество элементов в массиве

// Inc - порядок сортировки (true - по возрастанию)

void Sort2(int A[], int n, bool Inc);

// Сортировка методом обмена типа int

// A - сортируемый массив

// n - количество элементов в массиве

// Inc - порядок сортировки (true - по возрастанию)

//

// Реализация

//

void Sort1_1(double A[], int n, bool Inc)

{

for (int i = 1; i < n; ++i)

{

int j = i;

while ((j > 0) && ((Inc && (A[j] < A[j - 1])) || (!Inc && (A[j] > A[j - 1]))))

{

Swap(A[j], A[j - 1]);

--j;

}

}

}

void Sort1_2(double A[], int n, bool Inc)

{

for (int i = 1; i < n; ++i)

for (int j = i;

(j > 0) && ((Inc && (A[j] < A[j - 1])) || (!Inc && (A[j] > A[j - 1]))); --j)

Swap(A[j], A[j - 1]);

}

void Sort2(double A[], int n, bool Inc)

{

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

for (int j = i + 1; j < n; ++j)

if ((Inc && (A[j] < A[i])) || (!Inc && (A[j] > A[i])))

Swap(A[i], A[j]);

}

void Sort2(int A[], int n, bool Inc)

{

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

for (int j = i + 1; j < n; ++j)

if ((Inc && (A[j] < A[i])) || (!Inc && (A[j] > A[i])))

Swap(A[i], A[j]);

}

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

/*

Sort.cpp: определяет точку входа для консольного приложения.

Заголовочные файлы arr_common.h, arr_sort.h и my_rand.h должны находиться в папке этого проекта, либо путь к ним должен быть указан в настройках параметров проекта:

Меню среды: Проект – Свойства – Свойства конфигурации – Каталоги VC++ - Каталоги включения и добавляем здесь путь к нашим заголовочным файлам

*/

#include "stdafx.h"

#include <iostream>

#include <conio.h>

#include "arr_common.h"

#include "arr_sort.h"

#include "my_rand.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

const int N = 10;

double M[N];

setlocale(0, "");

RandInit(); // Инициализируем датчик случайных чисел (#include "my_rand.h")

cout << " Проверка алгоритмов сортировки.\n";

cout << " -------------------------------\n";

for (char b = '1'; b != 27; cout << "\n\t\t\tПродолжим? (нет - Esc) ",

b = _getch(), cout << endl)

{

RandMakeArr(M, N, 1, 5); // Заполняем массив М из N элементов случайными числами в диапазоне от 1 до 5 (#include "arr_common.h")

cout << "Исходный массив:\n";

ArrOut(M, N); // Выводим исходный массив М из N элементов на экран (#include "arr_common.h")

// Sort1_1(M, N, 1); // Сортируем массив М из N элементов по возрастанию методом "пузырька" (#include "arr_sort.h")

// Sort1_2(M, N, 1); // Сортируем массив М из N элементов по возрастанию методом "пузырька" (#include "arr_sort.h")

Sort2(M, N, 1); // Сортируем массив М из N элементов по возрастанию методом обмена (#include "arr_sort.h")

cout << "Массив, отсортированный по возрастанию:\n";

ArrOut(M, N); // Выводим отсортированный массив М из N элементов на экран (#include "arr_common.h")

Sort2(M, N, 0); // Сортируем массив М из N элементов по убыванию методом обмена (#include "arr_sort.h")

cout << "Массив, отсортированный по убыванию:\n";

ArrOut(M, N); // Выводим отсортированный массив М из N элементов на экран (#include "arr_common.h")

}

return 0;

}