Insertion Sort. Wo liegt Fehler ?
-
void insert(int x[],int length) { for(int i=1;i<length ;i++) { int j=0; for( j=0;j<i;j++) { if(x[i]<x[j]) break; } int tmp=x[i]; for(int z=i;z>0;z--) { x[z]=x[z-1]; } x[j]=tmp; } }
-
void insert(int x[],int length) { for(int i=1;i<length ;i++) { int j=0; for( j;j<i;j++) { if(x[i]<x[j]) break; } int tmp=x[i]; for(int z=i;z>0;z--) { x[z]=x[z-1]; } x[j]=tmp; } }
-
So Fehler schon entdeckt

[cpp]
void insert(int x[],int length)
{for(int i=1;i<length ;i++)
{int j=0;
for( j=0;j<i;j++)
{if(x[i]<x[j]) break;
}
int tmp=x[i];
for(int z=i;z>j;z--)
{
x[z]=x[z-1];
}x[j]=tmp;
}
}
-
void insert(int x[],int length) { for(int i=1;i<length ;i++) { int j=0; for( j=0;j<i;j++) { if(x[i]<x[j]) break; } int tmp=x[i]; for(int z=i;z>0;z--) { x[z]=x[z-1]; } x[j]=tmp; } }
-
so der Code stimmt jetzt.
Was wir in der Schule noch gemacht haben. Da ja das int j nach jedem
schleifendurchgang neu angelegt wird, kann man das mit einem Sentinel umgehn.Weiß jemand wie das geht ?
-
Man merkt dass es spät ist, so jetzt hier der richtige Code.
Was hat es mit dem Sentinel auf sich ?void insert(int x[],int length) { for(int i=1;i<length ;i++) { int j=0; for( j=0;j<i;j++) { if(x[i]<x[j]) break; } int tmp=x[i]; for(int z=i;z>j;z--) { x[z]=x[z-1]; } x[j]=tmp; } }