daca tot se vorbeste de .. detoate ... sper sa fie primita si ideea de programare
incep eu cu o prima problema care nu imi iese;
Se considera o multime finita de obiecte, fiecare avand asociata o caracteristica, numita cheie, ce ia valori intr-o multime pe care este definita o relatie de ordine. Sortarea este procesul prin care elementele multimii sunt aranjate a.i. cheile lor sa fie intr-o anumita ordine.
m-am gandit asa:
incepand cu al doile element al tabloului x[1...n], fiecare element este inserat pe pozitia adecvata in subtabloul care il precede.
La fiecare etapa a sortarii, elementului x[i] i se cauta pozitia adecvvata in substratul destinatie x[1..i-1] (care este deja ordonat), comparand pe x[i] cu elementele din x[1...i-1] si creand spatiu prin deplasarea spre dreapta a elementelor mai mici ca [xi].
iata si codul ... DEVCPP
ce am omis? unde gresesc?
doar prima functie de sortare prin insertie
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
insertie(real x[])
{
int i,j;
float aux;
for(i=2;i<=size(x)/size(vector);i++) //x.size;i++)
{
j=i-1;
aux=x[i];
while (j>=1 && aux<x[j])
{
x[j+1]=x[j];
j++;
}
}
return x;
}
insertie2(real x[])
{
int i,j;
float aux;
for(i=2; i<=size(x)/size(float); i++)
{
x[0]=x[i];
j=i-1;
while (x[0]<x[j])
{
x[j+1]=x[j];
j--;
}
x[j+1]=x[0];
}
return x;
}
insertie_pas(real x[], int h)
{
int i,j;
float aux;
for(i=h+1; i<=size(x)/size(float); i++)
{
j=i-h;
aux=x[i];
while (j>=1 && aux<x[j])
{
x[j+1]=x[j];
j-=h;
}
x[j+h]=aux;
}
return x;
}
shellsort(real x[])
{
int h=1;
while (h<=size(x)/size(float)) h=3*h+1;
while(h!=1)
{
h/=3;
x=insertie_pas(x, h);
}
return x;
}
............
incep eu cu o prima problema care nu imi iese;
Se considera o multime finita de obiecte, fiecare avand asociata o caracteristica, numita cheie, ce ia valori intr-o multime pe care este definita o relatie de ordine. Sortarea este procesul prin care elementele multimii sunt aranjate a.i. cheile lor sa fie intr-o anumita ordine.
m-am gandit asa:
incepand cu al doile element al tabloului x[1...n], fiecare element este inserat pe pozitia adecvata in subtabloul care il precede.
La fiecare etapa a sortarii, elementului x[i] i se cauta pozitia adecvvata in substratul destinatie x[1..i-1] (care este deja ordonat), comparand pe x[i] cu elementele din x[1...i-1] si creand spatiu prin deplasarea spre dreapta a elementelor mai mici ca [xi].
iata si codul ... DEVCPP
ce am omis? unde gresesc?
doar prima functie de sortare prin insertie
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
insertie(real x[])
{
int i,j;
float aux;
for(i=2;i<=size(x)/size(vector);i++) //x.size;i++)
{
j=i-1;
aux=x[i];
while (j>=1 && aux<x[j])
{
x[j+1]=x[j];
j++;
}
}
return x;
}
insertie2(real x[])
{
int i,j;
float aux;
for(i=2; i<=size(x)/size(float); i++)
{
x[0]=x[i];
j=i-1;
while (x[0]<x[j])
{
x[j+1]=x[j];
j--;
}
x[j+1]=x[0];
}
return x;
}
insertie_pas(real x[], int h)
{
int i,j;
float aux;
for(i=h+1; i<=size(x)/size(float); i++)
{
j=i-h;
aux=x[i];
while (j>=1 && aux<x[j])
{
x[j+1]=x[j];
j-=h;
}
x[j+h]=aux;
}
return x;
}
shellsort(real x[])
{
int h=1;
while (h<=size(x)/size(float)) h=3*h+1;
while(h!=1)
{
h/=3;
x=insertie_pas(x, h);
}
return x;
}
............