Untitled
unknown
c_cpp
2 years ago
3.2 kB
6
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...