#include <iostream.h>
#include <iomanip>
#include <cstdlib>
#include <time.h>
#include <algorithm>
int main(void)
{
int i, j, k, m, x, r, w;
int *tab=new int [r];
cout<<"Wprowadz rozmiar tablicy:"<<" "<<endl; // Zmienna r deklaruje rozmiar kopca => rozmiar tablicy
cin>>r;
for(i=1;i<=r;i++) // Wypełniamy tablicę liczbami wybranymi przez użytkownika, całkowitymi!!
{
cout<<"Wprowadz liczbe do kolumny numer"<<" "<<i<<endl;
cin>>w;
tab[i]=w;
}
// ZACZYNAM BUDOWAĆ KOPIEC!!
for(i=2;i<=r;i++)
{
j=i;k=j/2; //j=i To jest tablica pomocnicza, natomiast k=j/2 jest to tablica pomocniczna podzielona na pół.
x=tab[i]; // Zmienna "x" określa bieżącą, zdeklarowaną na samym początku tablicę.
while((k>0) && (tab[k]<x)) // Dopóki k>0 i połowa tablicy tab[k] mniejsza od rozmiaru tablicy pierwotnej wykonuj:
{
tab[j]=tab[k];
j=k;k=j/2;
}
tab[j]=x;
}
// ROZBIERAMY KOPIEC!!
for(i=r;i>1;i--)
{
swap(tab[1], tab[i]);
j=1;k=2;
while(k<i)
{
if((k+1<i) && (tab[k+1]>tab[k]))
m=k+1;
else
m=k;
if(tab[m]<=tab[j]) break;
swap(tab[j], tab[m]);
j=m; k=j+j;
}
}
cout<<"Po sortowaniu:"<<endl;
for(i=1;i<=r;i++)
{
cout<<" "<<tab[i]<<endl;
//cout<<endl;
}
system("PAUSE");
return 0;
}
Błąd tyczy się swapa'a i brzmi on:
`swap' undeclared (first use this function)
Nie wiem co jest nie tak...
Pozdrawiam!
Dodam tylko, że gotowy algorytm działa - ale w nim jest z góry ustalona liczebność zbioru. Moja modyfikacja polega na tym, że to użytkownik ustala ile i co ma być w tablicy.
Pozdrawiam!