heapsort

sarsik87

Użytkownik
Dołączył
Kwiecień 21, 2007
Posty
40
Mam kolejny problem ….a mianowicie mam taki program który sortuje przez kopcowanie:

#include <iostream.h>
#include <algorithm>
#include <iomanip>

using namespace std;

main()
{
const int N = 10; // liczebność zbioru
int d[N + 1],i,j,k,m,x;


// Wypełniamy tablicę liczbami
for(i = 1; i <= N; i++)
{
d = i; cout << setw(4) << d;
}
cout << endl;

// Budujemy kopiec
for(i = 2; i <= N; i++)
{
j = i; k = j / 2;
x = d;
while((k > 0) && (d[k] < x))
{
d[j] = d[k];
j = k; k = j / 2;
}
d[j] = x;
}

// Rozbieramy kopiec
for(i = N; i > 1; i--)
{
swap(d[1], d);
j = 1; k = 2;
while(k < i)
{
if((k + 1 < i) && (d[k + 1] > d[k]))
m = k + 1;
else
m = k;
if(d[m] <= d[j]) break;
swap(d[j], d[m]);
j = m; k = j + j;
}
}

// Wyświetlamy wynik sortowania

cout << "Po sortowaniu:nn";
for(i = 1; i <= N; i++) cout << setw(4) << d;
cout << endl;
system("PAUSE");
return 0;
}


Wszystko dziala niby dobrze ale…..jak zrobic aby po wpisaniu do tablicy na pozycje 0 jakiejs liczby aby program tez ja sortował ?? bo jak na razie to ten program sortuje liczby od indeksu 1 w gore. Mam nadzieje ze zrozumieliście mnie ….
<
licze na wasza pomoc ;]
Kod:
 

Dragy

Użytkownik
Dołączył
Grudzień 20, 2007
Posty
4
Nie wiem czy chodzi ci o to, bo program sam sobie wpisuje 10 pierwszych liczb które są niby posortowane.



#include <iostream.h>
#include <algorithm>
#include <iomanip>

using namespace std;

main()
{
const int N = 10; // liczebność zbioru
int d[N + 1],i,j,k,m,x;


// Wypełniamy tablicę liczbami
for(i = 0; i <= N; i++)
{
d = i; cout << setw(4) << d;
}
cout << endl;

// Budujemy kopiec
for(i = 2; i <= N; i++)
{
j = i; k = j / 2;
x = d;
while((k > 0) && (d[k] < x))
{
d[j] = d[k];
j = k; k = j / 2;
}
d[j] = x;
}

// Rozbieramy kopiec
for(i = N; i > 1; i--)
{
swap(d[1], d);
j = 1; k = 2;
while(k < i)
{
if((k + 1 < i) && (d[k + 1] > d[k]))
m = k + 1;
else
m = k;
if(d[m] <= d[j]) break;
swap(d[j], d[m]);
j = m; k = j + j;
}
}

// Wyświetlamy wynik sortowania

cout << "Po sortowaniu:nn";
for(i = 0; i <= N; i++) cout << setw(4) << d;
cout << endl;
system("PAUSE");
return 0;
}[/b]
 
Do góry Bottom