Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Kordan C++ **************************************
- * Программа заполнения массива случайными числами *
- * и его сортировка по возрастанию методом Хоара c *
- * автоматическим определением длины массива *
- * *************************************************
- */
- #include <iostream>
- #include <cstdlib> // содержит srand() и rand()
- #include <ctime> // содержит time()
- #include <malloc.h>// содержит _msize()
- using namespace std;
- int FillArray (int *arr, const int size, const int min_range, const int max_range);
- void sortHoare (int *arr, int end);
- void print (int *arr, int size);
- int main () {
- setlocale (LC_ALL, "RUS");
- // Количество чисел в массиве
- const int SIZE = 25;
- // Минимальное число в массиве
- const int MIN_RANGE = 1;
- // Максимальное число в массиве
- const int MAX_RANGE = 100;
- int *list = new int[SIZE];
- if (FillArray (list, SIZE, MIN_RANGE, MAX_RANGE) != 1) {
- // Выводим значения исходного массива
- print (list, SIZE);
- // Сортируем массив по возрастанию
- // С помощью выражения "_msize (list) / sizeof (list[0])" получаем размер массива
- sortHoare (list, _msize (list) / sizeof (list[0]) - 1);
- // Выводим значения отсортированного массива
- print (list, SIZE);
- }
- delete[] list;
- cout << endl << endl;
- //system ("pause");
- return 0;
- }
- // -- Kordan C ++ -----------------------------------
- // Функция сортировки массива методом Хоара -
- // -
- // Аргументы функции: -
- // *arr - Имя массива -
- // size - Конец массива -
- // -
- // Пример использования: -
- // quickSort (list, SIZE - 1); -
- // -- begin -----------------------------------------
- void sortHoare (int *arr, int size) {
- int first = 0, last = size;
- int pivot = arr[size >> 1];
- do {
- while (arr[first] < pivot) first++;
- while (arr[last] > pivot) last--;
- if (first <= last) swap (arr[first++], arr[last--]);
- } while (first <= last);
- if (last > 0) sortHoare (arr, last);
- if (size > first) sortHoare (arr + first, size - first);
- }
- // -- end --
- // -- Kordan С++ -----------------------------------------
- // Функция заполнения массива случайными целочисленными -
- // значениями в диапазоне чисел -
- // -
- // Необходимо подключить: -
- // #include <cstdlib> (содержит srand() и rand()) -
- // #include <ctime> (содержит time()) -
- // -
- // Аргументы функции: -
- // *arr - Имя массива -
- // size - Размер массива -
- // min_range - Минимальное значение диапазона -
- // max_range - Максимальное значение массива -
- // -- begin ----------------------------------------------
- int FillArray (int *arr, const int size, const int min_range, const int max_range) {
- // Автоматическая рандомизация
- srand (time (0));
- for (int i = 0; i < size; i++) {
- if (min_range <= max_range) arr[i] = min_range + rand () % (max_range + 1 - min_range);
- else {
- cout << "Ошибка!\nМаксимальное значение диапазона чисел должно быть больше минимального!\n";
- return 1;
- }
- }
- }
- // -- end --
- // -- Kordan C ++ ---------------------------------------
- // Функция вывода на консоль значений элементов массива -
- // -
- // Аргументы функции: -
- // *arr - Имя массива -
- // size - Размер массива -
- // -- begin ---------------------------------------------
- void print (int *arr, int size) {
- for (int i = 0; i < size; i++) {
- cout << *(arr + i) << " ";
- }
- cout << endl << endl;
- }
- // -- end --
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement