Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser.

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Linguagem de Programação IV
Introdução à Programação Apresentação da Disciplina 1º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 04 Aquiles Burlamaqui UERN
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Algoritmos de Ordenação
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Algoritmos de Ordenação
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
Introdução a Programação
Vetores Declaração – float vetor[5]; Identificação de um elemento – índice variando de 0 a (N-1), N = número de elementos do vetor – Cuidado: o C não checa.
Aula 1 Tipo Abstrato de Dados
HeapSort Filas de Prioridade – Heap
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo Programação II Estruturas Professora: Norminda Luiza.
Ponteiros.
Funções.
Listas Encadeadas.
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
Algoritmos de Ordenação
Algoritmos de Ordenação
O Portal do Estudante de Computação
Vetores em c / c++: Formato geral para declaração de variáveis:
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
PROGRAMAÇÃO ESTRUTURADA II
Algoritmo de Ordenação
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
Construção de Algoritmos AULA 04
Construção de Algoritmos AULA 03
Ordenação em memória primária
Implementação de FILAS com Alocação Dinâmica
Heap Sort TPA – Prof. Mateus Costa
PROGRAMAÇÃO I PONTEIROS.
Argumentos por valor Passagem de valor da variável indicada Não permite alteração de variável indicada Exemplo: int quadrado_de(int ); //protótipo int.
Seminário 1: Revisão de C
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Métodos de Ordenação e Busca
Prof. Ricardo Santos PONTEIROS
Introdução à linguagem C
Linguagem de Programação
Procedimentos e Funções
APRENDER A APRENDER deve ser nossa meta. Comandos de Controle de Programa Comandos de Seleção Prof. Me. Jeime Nunes.
Árvore Binária de Busca
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
 São utilizadas para dividir um código maior (mais complexo) em partes menores (mais simples).  Quando uma mesma tarefa é realizada várias vezes em um.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Revisão Luis Antonio Tavares
Algoritmos e Programação MC102
Técnicas de Programação I Prof:. Msc. Arimatéia Junior Fortaleza-2011.
Linguagem de Programação
Funcionamento Bucket sort funciona do seguinte modo: Inicialize um vetor de "baldes", inicialmente vazios. Vá para o vetor original, incluindo cada.
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
Computação – Informática Aula N. 05 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Matrizes em C”
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
Fundamentos de Programação 1
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Resolução comentada do problema "Desordens" Prof. Adolfo Neto Departamento Acadêmico de Informática Universidade Tecnológica Federal do Paraná
INF1007: Programação 2 6 – Ordenação de Vetores
Transcrição da apresentação:

Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser ordenado Ordenação por Seleção

#include int menorP(int v[], int p, int n) { int i; int menor = p; for (i=p+1;i<n;i++) { if (v[menor] > v[i]) menor = i; } return(menor); } int main() { int tam = 7, pmen, aux, i; int v[] = {9,3,12,20,1,30,8}; for (i=0; i<(tam-1); i++) { /*busco a posição do menor elemento do sub- vetor*/ pmen = menorP(v, i, tam); /*troco com o primeiro do sub-vetor*/ aux = v[i]; v[i] = v[pmen]; v[pmen] = aux; }

Ordenação por Inserção Em cada passo, a partir de i = 2 – Apanhe o i-ésimo item da seqüência-fonte – Insira no lugar apropriado da seqüência-destino

Ordenação por Inserção #include void insere(int valor, int v[], int ult) { int i; i = ult - 1; while ((i>=0) && (v[i] > valor)) { /*desloco à esquerda*/ v[i+1] = v[i]; i--; } /*aqui vou inserir*/ v[i+1] = valor; } int main() { int tam = 7; int v[] = {9,3,12,20,1,30,8}; int i; for (i=1; i<tam; i++) insere(v[i], v, i); }

Método da Bolha Para cada elemento no vetor, de trás para frente – Varra o vetor até este elemento, trocando de ordem os elementos for a de ordem, de 2 em

Método da Bolha #include int main() { int tam = 7; int v[] = {9,3,12,20,1,30,8}; int i,j; int aux; for (j=tam; j>1; j--) for (i=0; i<(j-1); i++) if (v[i] > v[i+1]) { /*troco*/ aux = v[i]; v[i] = v[i+1]; v[i+1] = aux; } #include int main() { int tam = 7; int v[] = {9,3,12,20,1,30,8}; int i,j; int aux; for (i=0; i<tam; i++) for (j=tam-1;j>i;j--) if (v[j] < v[j- 1]) { /*troco*/ aux = v[j]; v[j] = v[j- 1]; v[j-1] = aux; }

Números Aleatórios Em C isso realmente dói! rand() - gera uma seqüência de números pseudo-aleatórios, devolvendo um inteiro entre 0 e RAND_MAX ( ) Usa #include int main() { int i; for (i=0; i<5; i++) printf("%d\n",rand()); } Duas chamadas ao programa: $./a.out $./a.out São exatamente iguais

Números Aleatórios Solução: usar a hora do sistema para inicializar rand() (. time() - número de segundos desde 01/01/1970 srand() - estabelece um ponto de partida para a seqüência gerada por rand() #include int main() { int i, stime; long ltime; /*obtém a hora do sistema*/ ltime = time(NULL); stime = (unsigned) ltime/2; srand(stime); /*for (i=0; i<5; i++) printf("%d\n",rand()); } Duas chamadas ao programa: $./a.out $./a.out São diferentes

Números Aleatórios E se quisermos entre 0 e 3, por exemplo? Grandes coxambres... #include int main() { int i; int stime; long ltime; double numero; /*senão não cabe*/ /*obtém a hora do sistema*/ ltime = time(NULL); stime = (unsigned) ltime/2; srand(stime); /*imprimindo 5 aleatórios entre 0 e 3*/ for (i=0; i<5; i++) { numero = rand(); printf("%d\n",(int)(3*(numero-1)/RAND_MAX)); } Vale consultar: f/algoritmos/aulas/rando m.html

#include int main() { int i; int stime; long ltime; int numero; /*obtém a hora do sistema*/ ltime = time(NULL); stime = (unsigned) ltime/2; srand(stime); /*imprimindo 5 aleatórios entre 0 e 3*/ for (i=0; i<5; i++) { numero = rand() % 4; /* rand() % (n+1) */ printf("%d\n",numero)); } Outro modo de fazer é... Números Aleatórios