sortowanie przez kocpowanie nierosnąco.. są moze gdzieś gotowe zaimplementowane przyklady takiego sortowania? szukam i nie mogę znalezć
0
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;
}