15337

Изучение алгоритма пирамидальной сортировки и реализация его на языке программирования С++

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №2 по дисциплине Структуры и алгоритмы обработки данных Цель работы: Изучение алгоритма пирамидальной сортировки и реализация его на языке программирования С. Задание на работу Написать программу генерирующую числовой массив ра

Русский

2013-06-13

49 KB

16 чел.

Лабораторная работа №2

по дисциплине

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

Цель работы:

Изучение алгоритма пирамидальной сортировки и реализация его на языке программирования С++.

Задание на работу

  1.  Написать программу, генерирующую числовой массив, размер которого задаётся через пользовательский интерфейс.
    1.  Реализовать функцию пирамидальной сортировки.
      1.  Оценить сложность алгоритма программы.

Реализация программы на C++

#include "stdafx.h"

#include "time.h"

#include "stdlib.h"

#include "iostream"

const int size = 20;

using namespace std;

void fillRandomArray(int m[])//функция заполняет массив

{

for(int i = 0; i < size; i++)

 m[i] = rand() % 100;//вводим случайный элемент

}

void printArray(int m[])//функция выводит массив

{

for(int i = 0; i < size; i++)//

 cout << m[i] << ' ';//

cout << endl << endl;

}

void heapify (int pos, int n, int m[])//исправление пирамиды

{

while (2 * pos + 1 < n)

{

 int t = 2 * pos +1;

 if (2 * pos + 2 < n && m[2 * pos + 2] >= m[t])

 {

  t = 2 * pos + 2;

 }

 if (m[pos] < m[t])

 {

  swap(m[pos], m[t]);

  pos = t;

 }

 else break;

}

}

void heap_make(int n, int m[])//создание неубывающей пирамиды

{

for (int i = n - 1; i >= 0; i--)

 {

 heapify(i, n, m);//исправление пирамиды

 }

}

void heap_sort(int m[], int n)//сортировка

{

heap_make(n, m);//создание неубывающей пирамиды

while(n>0)

{

 swap(m[0],m[n-1]);//обмен значениями

 n--;

 heapify(0,n,m);//исправление пирамиды

 }

}

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

{

srand(time(NULL));

int a[size];

 fillRandomArray(a);//заполнение массива случайными числами

 cout << "Original array:" << endl;

printArray(a);//вывод

cout << endl;

heap_sort(a,size);//сортировка

cout << "Sorted array:" << endl;

printArray(a);//вывод

 system("PAUSE");

return 0;

}

Скриншот с результатами выполнения программы

Оценка сложности алгоритма

В худшем случае фаза создания пирамиды требует N/2 шагов просеивания, причём на каждом шаге элементы просеиваются через log(N/2), log(N/2+1),…, log(N-1) позиций. Затем фаза сортировки требует n-1 просеиваний с не более чем log(N-1), log(N-2),…,1 пересылок. Кроме того потребуется n-1 пересылок для того, чтобы поставить элементы с вершины пирамиды на свои места. Получается, что даже в наихудшем случае пирамидальная сортировка требует N*log(N) пересылок. Это свойство является важнейшей отличительной особенностью данного алгоритма.                  
Наилучшей производительности можно ожидать, если элементы изначально стоят в обратном порядке. Тогда фаза создания пирамиды не потребует пересылок. Среднее число пересылок равно N/2*log(N), а отклонения от этого значения довольно малы.

Вывод

Алгоритм пирамидальной сортировки был изучен и реализован на языке программирования С++. Была оценена сложность алгоритма.


 

А также другие работы, которые могут Вас заинтересовать

84093. Унитарное государство признаки и виды 20.55 KB
  Унитарное государство характеризуется следующими признаками: унитарное устройство предполагает единые общие для всей страны высшие исполнительные представительные и судебные органы которые осуществляют верховное руководство соответствующими органами; на территории унитарного государства действует одна конституция единая система законодательства одно гражданство; составные части унитарного государства области департаменты округа провинции графства государственным суверенитетом не обладают; унитарное государство на территории...
84094. Федерация: понятие и признаки, виды 23.76 KB
  Существуют следующие формы государственного устройства: 1 Унитарное государство 2 Федеративное государство 3 Конфедеративное на данный момент не существует в природе 4 Региональное государство Федеративное государство представляет собой добровольное объединение ранее самостоятельных государственных образований в одно союзное государство государство состоящее из государств членов или государственных образований субъектов федерации. На данный момент в мире насчитывается 24ре федерации. Федерации бывают: а Договорные и...
84095. Форма государственного устройства: понятие и виды 21.73 KB
  Территория федерации состоит из территорий ее отдельных субъектов: штатов кантов земель республик и т. Субъекты федерации имеют право принятия собственной конституции имеют свои высшие исполнительные законодательные и судебные органы 4. В большинстве федерации существует союзное гражданство и гражданство федеральных единиц. При федеральном государственном устройстве в парламенте имеется палата представляющая интересы членов федерации.
84096. Демократический режим и его признакии 22.3 KB
  В демократическом государстве существует взаимная ответственность государства и личности.Предоставление широкой свободы личности предприятиям и организациям в сфере экономической деятельности которая при демократическом политическом режиме составляет основу материального благосостояния граждан.Реальная гарантированность прав и свобод личности и реальная возможность реализовать данные права и свободы.Наличие эффективной и квалифицированной судебной защиты прав и свобод личности от произвола и беззакония со стороны кого бы то ни было.
84097. Антидемократические государственно-правовые режимы 25.92 KB
  Основными чертами тоталитарного политического режима являются следующие: государство стремится к глобальному господству над всеми сферами общественной жизни к всеохватывающей власти; общество полностью отчуждено от политической власти но оно не осознает этого ибо в политическом сознании формируется представление о единстве слиянии власти и народа; господствует монопольный контроль над экономикой средствами массовой информации культурой религией и т. фактически устраняется плюрализм; происходит централизация государственной...
84098. Функции государства: понятие, признаки, содержание 20.68 KB
  Функции государства это основные направления внутренней и внешней деятельности государства в которых выражаются и конкретизируются его классовая и общечеловеческая сущность и социальное назначение. В этом определении выделены наиболее существенные признаки функций государства. Функции государства непосредственно выражают и предметно конкретизируют его классовую и общечеловеческую сущность.
84099. Внутренние функции государства современного государства и их содержание 22.02 KB
  Охранительная функция: Это функция государственной деятельности проявляется в обеспечении государством общественного и правового порядка защите и охране прав и интересов граждан и организаций защите конституционного строя и государства от противоправных посягательств. Обеспечение внутреннего мира и согласия в обществе урегулирования общественных отношений снятие социальных противоречий неизбежных в обществе состоящем из различных классов групп слоев это насущная необходимость одна из тех причин которые вызывали возникновение...
84100. Внешние функции государства современного государства и их содержание 23.61 KB
  Защита государства от вооруженных нападений других государств. Функция защиты из вне: Данная функция является важнейшим направлением деятельности государства ибо она нацелена на защиту мирного труда суверенитета и территориальной целостности государства. 30 Формы и методы осуществления функций государства Государство должно выполнять свои функции в присущих ему формах применять в своей деятельности различные методы.
84101. Механизм государства, государственный аппарат: понятие и их соотношение 21.97 KB
  Механизм государства есть та реальная организационная материальная сила располагая которой государство осуществляет власть. Механизм является структурным и предметным олицетворением государства представляет собой материальное вещество из которого оно состоит. Можно сказать что механизм суть деятельное постоянно функционирующее выражение государства.