Para ajudar no estudo !!
Vejam os vídeos do canal ,engloba os algoritmos que abordamos nas aulas
http://youtu.be/OM8ZHrySAj4
quinta-feira, 31 de outubro de 2013
Algoritmo Quick Find
Pseudo-C
função connected(P,Q)
{
retorna quick_find_ID[P]==quick_find_ID[Q];
}
Função Union(P,Q)
{
Inicializar a variavel i, , count_comp e vec_size
Pid=quick_find_ID[P];
Qid=quick_find_ID[Q];
Se Pid==Qid
retorna
count_comp--;
For i=0 to vec_size
Se quick_find_ID[i]==Pid
então
quick_find_ID[i]=Qid;
}
terça-feira, 29 de outubro de 2013
Quick Sort (em c)
Quicksort is a very efficient sorting algorithm. It has two phases:
- the partition phase and
-the sort phase,
Most of the work is done in the partition phase. it works out where to divide the work.
The sort phase simply sorts the two smaller problems that are generated in the partition phase.
Complexity: O(n.log n)
void quick_sort(int n, int* v)
{
if(n<=1)
return;
else
{
int x=v[0];
int e=1;
int d=n-1;
do
{
while(e<n && v[e] <=x) e++;
while(v[d]>x)d--;
if(e<d)//faz a troca
{
int temp=v[e];
v[e]=v[d];
v[d]=temp;
e++;
d--;
}
}
while(e<=d); //troca o pivot
v[0]=v[d];
v[d]=x;
//ordena sub vectores restantes
quick_sort(d,v);
quick_sort(n-e,&v[e]);
}
}
- the partition phase and
-the sort phase,
Most of the work is done in the partition phase. it works out where to divide the work.
The sort phase simply sorts the two smaller problems that are generated in the partition phase.
Complexity: O(n.log n)
void quick_sort(int n, int* v)
{
if(n<=1)
return;
else
{
int x=v[0];
int e=1;
int d=n-1;
do
{
while(e<n && v[e] <=x) e++;
while(v[d]>x)d--;
if(e<d)//faz a troca
{
int temp=v[e];
v[e]=v[d];
v[d]=temp;
e++;
d--;
}
}
while(e<=d); //troca o pivot
v[0]=v[d];
v[d]=x;
//ordena sub vectores restantes
quick_sort(d,v);
quick_sort(n-e,&v[e]);
}
}
Bubble Recrusivo (em C)
O próximo exemplo apresenta uma implementação recrusica em C do algoritmo bubble sort. Lembrar que o algoritmo recursivo de ordenação posiciona o elemento maior valor e chama, recursivamente, o algoritmo para ordenar o vector vec restante com n-1 elementos
void Bubble_rec(int n, int* vec)
{
int troca=0;
int j=0;
for(j=0; j<n-1; j++)
{
if(vec[j]>vec[j+1])
{
int temp=vec[j];
vec[j]=vec[j+1];
vec[j+1]=temp;
troca=1;
}
if(troca!=0)
Bubble_rec(n-1,vec);
}
}
void Bubble_rec(int n, int* vec)
{
int troca=0;
int j=0;
for(j=0; j<n-1; j++)
{
if(vec[j]>vec[j+1])
{
int temp=vec[j];
vec[j]=vec[j+1];
vec[j+1]=temp;
troca=1;
}
if(troca!=0)
Bubble_rec(n-1,vec);
}
}
Bubble Sort- Algoritmo (em c)
Uma função que implementa o algoritmo bubble sort e que considera a ordenação de um vector de valores inteiros é apresentada a seguir.Neste programa considera-se que a função recebe como parâmetros o numero de elementos e o ponteiro do primeiro elemento do vector que se deseja ordenar.
void Bubble_sort(int n, int* vec)
{
int i;
int j;
for(i=n-1; i>=1; i--)
{
for(j=0; j<i; j++)
{
//printf("vec: %d",vec[i]);
if(vec[j]>vec[j+1])
{
int temp=vec[j];
vec[j]=vec[j+1];
vec[j+1]=temp;
}
}
}
}
void Bubble_sort(int n, int* vec)
{
int i;
int j;
for(i=n-1; i>=1; i--)
{
for(j=0; j<i; j++)
{
//printf("vec: %d",vec[i]);
if(vec[j]>vec[j+1])
{
int temp=vec[j];
vec[j]=vec[j+1];
vec[j+1]=temp;
}
}
}
}
Subscrever:
Mensagens (Atom)