Untitled
unknown
c_cpp
3 years ago
3.2 kB
8
Indexable
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
#include <queue>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <chrono>
int rozmiar = 10000;
int rozmiar2 = rozmiar;
void heapify(int* tab, int heap_size, int i)
{
int largest, temp;
int l = 2 * i, r = (2 * i) + 1;
if (l <= heap_size && tab[l] > tab[i])
largest = l;
else largest = i;
if (r <= heap_size && tab[r] > tab[largest])
largest = r;
if (largest != i)
{
temp = tab[largest];
tab[largest] = tab[i];
tab[i] = temp;
heapify(tab, heap_size, largest);
}
}
void budKopiec(int* tab, int rozmiar)
{
for (int i = rozmiar / 2; i > 0; i--)
heapify(tab, rozmiar, i);
}
void sort(int* tab, int rozmiar) {
int temp;
budKopiec(tab, rozmiar);
for (int i = rozmiar; i > 1; i--)
{
temp = tab[i];
tab[i] = tab[1];
tab[1] = temp;
rozmiar--;
heapify(tab, rozmiar, 1);
}
}
usuwanie(int* tab, int& rozmiar) {
tab[rozmiar] = 0;
rozmiar = rozmiar - 1;
}
int main()
{
srand(time(NULL));
int random;
/*
std::aborthigh_resolution_clock::time_point t1 = high_resolution_clock::now();
std::cout << "Moj kopiec binarny: " << std::endl;
*/
int* tab = new int[rozmiar + 1];
for (int i = 1; i <= rozmiar; i++)
{
random = rand();
tab[i] = random;
}
sort(tab, rozmiar);
/*
for (int i=rozmiar;i>=1;i--)
cout<<tab[i] << " ";
cout << endl;
*/
std::cout << "Max wynosi: " << tab[rozmiar] << std::endl;
usuwanie(tab, rozmiar);
std::cout << "Po usunieciu maksymalnego elementu: " << std::endl;
/*
for (int i=rozmiar;i>=1;i--)
cout<<tab[i] << " ";
cout << endl;
*/
std::cout << "Max wynosi: " << tab[rozmiar] << std::endl;
/*
std::high_resolution_clock::time_point t2 = high_resolution_clock::now();
duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
std::cout << "Czas mojego algorytmu kopca binarnego wynosi: " << time_span.count() << " seconds." << std::endl;
*/
std::cout << "******************************************************************************************************************" << std::endl;
/*
std::high_resolution_clock::time_point t3 = high_resolution_clock::now();
*/
priority_queue<int> q1;
for (int i = 1; i <= rozmiar2; i++){
random = rand();
q1.push(random);
}
const int& ii = q1.top();
std::cout << "Maksymalny element priority_queue wynosi: "<< ii << "." << std::endl;
q1.pop();
const int& iv = q1.top();
std::cout << "Po usunieciu najwiekszego elementu, maksymalny element priority_queue wynosi: " << iv << "." << std::endl;
/*
high_resolution_clock::time_point t4 = high_resolution_clock::now();
duration<double> time_span2 = duration_cast<duration<double>>(t4 - t3);
std::cout << "Czas algorytmu z priority_queue: " << time_span2.count() << " seconds." << std::endl;
*/
return 0;
}
Editor is loading...