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;
}
}