sortowanie przez kopcowanie

0

sortowanie przez kocpowanie nierosnąco.. są moze gdzieś gotowe zaimplementowane przyklady takiego sortowania? szukam i nie mogę znalezć

0

Osobiście do algorytmów sortujących polecam tę stronę: http://www.algorytm.org/algorytmy-sortowania/

Oczywiście heapsort też tam jest.

0

chodzi mi o nierosnące

0

Jest dobrze? Niby wyniki dobrze wypisuje ale nie wiem czy jest ok dla wszystkich przypadkow.


#include<iostream>
using namespace std;
 
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);
    }
}
 
int main()
{
    int rozmiar;
    cin>>rozmiar;
    int *tab=new int[rozmiar+1];
 
    for (int i=1; i<=rozmiar; i++)
        cin>>tab[i];
 
    sort (tab,rozmiar);
 
    for (int i=1; i<=rozmiar; i++)
        cout<<tab[i] << " ";
    cout << endl;
 
    return 0;
}


1 użytkowników online, w tym zalogowanych: 0, gości: 1