Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- using namespace std;
- void max_heapify(int *a, int i, int n)
- /*
- a : ο πίνακας.
- i : κάποιο στοιχείο από την μέση του πίνακα και κάτω.
- n : το πλήθος των στοιχείων όλου του πίνακα.
- */
- {
- int aristero_pedi, temp;
- temp = a[i]; /* παίρνει το εκάστοτε στοιχείο κάτω από την μέση του πίνακα..*/
- aristero_pedi = 2*i; /* */
- while (aristero_pedi <= n)
- {
- if (aristero_pedi < n && a[aristero_pedi+1] > a[aristero_pedi]) /* κατι.. ΚΑΙ ..το δεξί φύλο να είναι πιο μεγαλό από το αριστερό */
- aristero_pedi = aristero_pedi+1; /* */
- if (temp > a[aristero_pedi])
- break;
- else if (temp <= a[aristero_pedi])
- {
- a[aristero_pedi/2] = aaristero_pedi];
- aristero_pedi = 2*aristero_pedi;
- }
- }
- a[aristero_pedi/2] = temp;
- return;
- }
- void heapsort(int *a, int n)
- {
- int i, temp;
- for (i = n; i >= 2; i--)
- {
- temp = a[i];
- a[i] = a[1];
- a[1] = temp;
- max_heapify(a, 1, i - 1);
- }
- }
- void build_maxheap(int *a, int n)
- /* n : πλήθος στοιχείων.
- a* : δείκτης στον πίνακα. */
- {
- int i;
- for(i = n/2; i >= 1; i--)
- /* i = με το μέσο του πίνακα & πάρε τον πίνακα από την μέση και κάτω.. */
- /* δηλαδή πάμε στους γονέες..*/
- {
- max_heapify(a, i, n);
- }
- }
- int main()
- {
- int n, i, x;
- cout<<"Πόσα στοιχεία θες να βάλεις στον πίνακα ; \n";
- cin>>n;
- int a[20];
- for (i = 1; i <= n; i++)
- {
- cout<<"Δώσε το στοχείο "<< (i) <<endl;
- cin>>a[i];
- }
- build_maxheap(a,n);
- heapsort(a, n);
- cout<<"sorted output\n";
- for (i = 1; i <= n; i++)
- {
- cout<<a[i]<<endl;
- }
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment