Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
-Elementos do vetor
->objetos que possui um atributo chave que deve ser mantido ordenado.
->os registros s�o usados para representar os elementos a serem ordenados
tipoitem = record
chave: tipochave
{declara��es desejadas}
end,
-> um metodo troca (x,y) realiza a t roca dos elementos presentes nas posi��es x e
y do vetor.
-> para fins de exemplos, n�meros inteiros sera�o utilizados como elementos.
__ Classifica��o __
- Quanto a estabilidade:
- metodos instaveis: a ordem relativa dos itens com chaves iguais � alterada
durante o processo de ordena��o
- metodos est�veis: se a ordem relativa dos itens com chaves iguais mant�m-se
inalterada durante o processo.
- alguns dos m�todos de ordena��o mais eficientes n�o s�o est�veis.
__ M�todos de Ordena��o __
-> s�o 3:
-bubblesort
-insertionsort
-selectionsort
-> caracteristicas:
-facil implementa��o
- baixa complexidade
- compara��es ocorrem sempre entre posi�oes adjacentes do vetor.
var i, j: inteiro;
x: tipoitem;
begin
for i := 2 to n do
for j:= n downto i do
begin
if v[j-1]> v[j] then
begin
x:=v[j-1];
v[j-1] := v[j];
v[j]:= x;
end;
end;
end;
___ Insertionsort___
-> caracteristicas:
- considera dois segmentos(sub-vetores) no vetor: odenado(aumenta) e n�o-
ordenado(diminui)
- ordena atraves da inser��o de um elemento por vez(1� elemento) do segmento
n�o ordenado no segmento ordenado, na posi��o correta
- inicialmente, o segmento ordenado cont�m o primeiro elemento no vetor
- realiza uma busca sequencial no segmento ordenado para inserir corretamente
um elemento no segmento n�o-ordenado
- nesta busca, realiza trocas entre elementos adjacentes para ir acertando a
posi��o do elemento a ser inserido.
-> complexidade:
- pior caso: vetor totalmente desordenado O(n�)
- melhor caso: caso vetor j� ordenado O(n)
var i, j, k : inteiro
x:tipoitem;v
begin
for i:= 2 to n do
begin
x:=v[i];
j:= i-1;
while(x<=v[j])and(j>0) do
begin
v[j+1]:=v[j];
j:= j-1;
end;
v[j+1]:=x;
end;
end;
-> Caracteristicas:
-particular: realiza busca sequencial pelo menor valor no segmento nao
ordenado a cada intera��o.
-> complexidade:
-para qualquer uso O(n�).
var i, j, k:inteiro;
x:tipoitem;
begin
for i=1 to n-1 do
begin
x:=i;
x:=v[i];
for j:=i+1 to n do
begin
if v[j] < x then
begin
k:=j;
x:=v[j];
v[k]:=v[i];
end;
v[i]:=x;
end;
end;
end;
__ merge sort
-Vantagens:
>inser��o e remo��o mais rapidas;
>uso mais racional da memoria dispon�vel;
-Desvantagens:
ex:
- lista encadeada armazenando valores inteiros;
- extrutura lista
- tipo lista
- tipo dos n�s da lista.
struct lista{
int info;
strutct lista *prox;
};
uma lista encadeada � representada pelo ponteiro para seu primeiro elemento,
do tipo lista*
OPERA��ES
typedef struct{
int info;
node *prox;
} node;
node *plista;
CriarListaSimples (node*plista)
{
plista=null;
}
INSER��O
- aloca memoria para apontar o elemento
- encadeia o elemento na lista existente
InsereNoInicioLista (int.elem)
{
node *aux;
aux=(node*) malloc (sizeoff(node));
*aux.info=elem;
*aux.prox=plista
plista=aux;
aux=null;
}
InsereNoFinalDaLista(int.elem)
{
node *aux1, *aux2;
aux1=(int*) malloc (sizeoff(int));
*aux1.info=elem;
*aux1.prox=null;
if (plista != null)
{
aux2=plista;
while (*aux2.prox != null)
aux2 = *aux2.prox;
*aux2.prox = aux1;
9 aux2=*aux1=null;
}
else
plista=aux1;
aux1=null;
}
RemoveDoInicioLista
{
node *aux;
] if (plista==null)
"Lista vazia"
else
aux=plista;
plista=plista.prox;
free(aux);
aux=null;
}
MostraElementosLista()
{
node*aux;
if(plista != NULL)
{
aux= plista;
do{
printf("%d", aux.into);
aux=*aux.rpox,
} while (aux != null);
}
}
|_PLISTA_|
-
-
\/
sent
|___| --> |_INFO_|......-->|_INFO_|
-
-
\/
\\03-07-17
|_PLISTA_|
-
-
\/
ant prox ant prox ant prox
|_INFO_|<---->|_INFO_|<......>|_INFO_|
- -
- -
\/ \/