Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Insert-Sort

Ostatnio zmodyfikowano 2014-10-11 10:07
Autor Wiadomość
poczben
Temat założony przez niniejszego użytkownika
Insert-Sort
» 2014-10-11 09:19:50
Prosilbym o wskazanie bledu w podanym kodzie. Na ekran zamiast posortowanych liczb, zostaja wypisane liczby w kolejnosci 45,1,2,20,5,58,578,23,69,5 a wiec jedyne co sie dzieje, to zamienily sie miejscami liczby 2 i 1.

#include <iostream>
using namespace std;

void insert_sort(int n, int z[]);

int main()
{
int z[]={45,2,1,20,5,58,578,23,69,5};
int n=sizeof(z)/4;
insert_sort(n,z);

for(int i=0; i<n; i++)
{
cout << z[i] << " ";
}
}

void insert_sort(int n, int z[])
{
for(int i=1; i<n; i++)
for(int j=i; j>0 && z[j]<z[j-1]; j--)
{
int t=z[i];
z[i]=z[j];
z[j]=t;
}
}

Algorytm wzialem z ksiazki wyd. Pearson, wiec raczej jest ok. Prosze o nie podawanie innych algorytmow ani linkow do dzialajacych wersji, bo te juz znalazlem. Prosze o wskazanie bledu w tym programie.
Analogiczny kod dla Bubble_Sort dziala mi bez problemu zwracajac wlasciwie posortowane liczby:

#include <iostream>
using namespace std;

void bubble_sort(int n, int z[]);

int main()
{
int z[]={45,23,8,5,9,87,6,3,32,65,12,0,5,8,98,4};
int n=sizeof(z)/4;
bubble_sort(n,z);

for(int i=0; i<n; i++)
{
cout << z[i] << " ";
}
}

void bubble_sort(int n, int z[])
{
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(z[i]>z[j])
{
int t=z[i];
z[i]=z[j];
z[j]=t;
}
}
 
P-118230
Jacob99
» 2014-10-11 09:24:49
bubble sort działa trochę inaczej niż insertion sort.
Popatrz sobie tu: Insertion sort
P-118231
stryku
» 2014-10-11 09:26:15
Według :http://cpp0x.pl/kursy​/Algorytmy/Sortowanie-danych​/Sortowanie-przez-wstawianie-an​g-insertion-sort​/446

zamiast

C/C++
for( int j = i; j > 0 && z[ j ] < z[ j - 1 ]; j-- )
{
    int t = z[ i ];

powinno być
C/C++
int t = z[ i ];
for( int j = i; j > 0 && z[ j ] < z[ j - 1 ]; j-- )
{

int t = z[ i ];
 masz w złym miejscu

EDIT
Jacob mnie uprzedził i chyba podałem złą podpowiedź
P-118232
poczben
Temat założony przez niniejszego użytkownika
» 2014-10-11 09:37:53
Dalej nie wiem, gdzie jest blad. Zamiana podana przez stryku nic nie zmienila. A kod podany przez Jacob99...coz, juz ktos tam skomentowal nizej w tym linku, ze czegos brakuje. Ponawiam prosbe o wskazanie bledu.
P-118233
stryku
» 2014-10-11 09:48:15
No ale ja Ci podałem jeden link, Jacob jeszcze inny. W obydwu jest implementacja w C++, więc czemu do jednego nie zajrzysz i nie porównasz swojego kodu?
P-118234
poczben
Temat założony przez niniejszego użytkownika
» 2014-10-11 10:07:51
ok juz mam
P-118235
« 1 »
  Strona 1 z 1