A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos com matrizes e vetores

Apresentações semelhantes


Apresentação em tema: "Algoritmos com matrizes e vetores"— Transcrição da apresentação:

1 Algoritmos com matrizes e vetores
Departamento de Ciências Exatas e Naturais Prof. Modesto Antonio Chaves

2 Algoritmos de ordenação

3 Algoritmos de ordenação
Um tipo de algoritmo muito usado na resolução de problemas computacionais são os algoritmos de ordenação, que servem para ordenar/organizar uma lista de números ou palavras de acordo com a sua necessidade. Algumas linguagens de programação já possuem métodos de ordenação, mas é bom saber como funcionam os algoritmos, pois há casos de problemas em que o algoritmo de ordenação genérico não resolve, às vezes é necessário modificá-lo.

4 Algoritmos de ordenação
Os mais populares algoritmos de ordenação são: Insertion sort Selection sort Bubble sort Comb sort Quick sort Merge sort Heap sort Shell sort

5 Algoritmos de ordenação
Neste capítulo serão estudados os algoritmos: Bubble sort, Selection Sort, Quick sort e Insertion sort Explicando o funcionamento de cada um deles.

6 Algoritmos de ordenação
Algoritmo de ordenação, em ciência da computação, é um algoritmo que coloca os elementos de uma dada sequência em uma certa ordem. Em outras palavras efetua sua ordenação completa ou parcial. O objetivo da ordenação é facilitar a recuperação dos dados de uma lista.

7 Algoritmos de ordenação
Bubble Sort Bubble sort é o algoritmo mais simples, mas o menos eficiente. Neste algoritmo cada elemento da posição i será comparado com o elemento da posição i + 1, ou seja, um elemento da posição 2 será comparado com o elemento da posição 3. Caso o elemento da posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. Por causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for necessária, tornando o algoritmo ineficiente para listas muito grandes.

8 Algoritmos de ordenação
Bubble Sort Seja o vetor A primeira passagem do Bubble Sort fica assim:

9 Algoritmos de ordenação
Bubble Sort É verificado se o 3 é maior que 5, por essa condição ser falsa, não há troca. É verificado se o 5 é maior que 1, por essa condição ser verdadeira, há uma troca.

10 Algoritmos de ordenação
Bubble Sort É verificado se o 5 é maior que 2, por essa condição ser verdadeira, há uma troca. É verificado se o 5 é maior que 4, por essa condição ser verdadeira, há uma troca. O método retorna ao início do vetor realizando os mesmos processos de comparações, isso é feito até que o vetor esteja ordenado.

11 Algoritmos de ordenação
Bubble Sort O método retorna ao início do vetor realizando os mesmos processos de comparações, isso é feito até que o vetor esteja ordenado.

12 VEJA O ALGORITMO: // Ordenação para a de 1 ate 10 faca    para b de 1 ate 9 faca       se x[b] > x[b+1] entao          temp <- x[b]          x[b] <- x[b+1]          x[b+1] <- temp       fimse    fimpara fimpara // Impressão dos dados ordenados para a de 1 ate 10 faca    escreval(a:3," - ", x[a] : 10 : 3) fimpara fimalgoritmo algoritmo "Bubble Sort" var    a, b : inteiro    temp : real    x : vetor[1..10] de real inicio // Leitura dos dados aleatorio 0,100,3 para a de 1 ate 10 faca    leia(x[a]) fimpara

13 Veja o bloco de comandos
aleatorio 0,100,3 para a de 1 ate 10 faca    leia(x[a]) fimpara Comando Aleatório Muitas vezes a digitação de dados para o teste de um programa torna-se uma tarefa entediante. Com o uso do comando aleatorio do VisuAlg, sempre que um comando leia for encontrado, a digitação de valores numéricos e/ou caracteres é substituída por uma geração aleatória. Este comando não afeta a leitura de variáveis lógicas: com certeza, uma coisa pouco usual em programação...  Este comando tem as seguintes sintaxes:

14 Veja o bloco de comandos
Este comando tem as seguintes sintaxes: aleatorio [on] Ativa a geração de valores aleatórios que substituem a digitação de dados. A palavra-chave on é opcional. A faixa padrão de valores gerados é de 0 a 100 inclusive. Para a geração de dados do tipo caractere, não há uma faixa pré- estabelecida: os dados gerados serão sempre strings de 5 letras maiúsculas.

15 Veja o bloco de comandos
Este comando tem as seguintes sintaxes: aleatorio <valor1 > [, <valor2 > ] Ativa a geração de dados numéricos aleatórios estabelecendo uma faixa de valores mínimos e máximos. Se apenas < valor1> for fornecido, a faixa será de 0 a <valor1> inclusive; caso contrário, a faixa será de <valor1> a <valor2> inclusive. Se <valor2> for menor que <valor1>, o VisuAlg os trocará para que a faixa fique correta. Importante: <valor1> e <valor2> devem ser constantes numéricas, e não expressões.

16 Veja o bloco de comandos
Este comando tem as seguintes sintaxes: aleatorio off Desativa a geração de valores aleatórios. A palavra-chave off é obrigatória.

17 INSERTION SORT O Insertion Sort é um algoritmo eficiente para ordenar um pequeno número de elementos. Basicamente, este algoritmo varre um array de elementos da esquerda para a direita e a medida que avança vai deixando os elementos mais a esquerda ordenados. O algoritmo funciona da mesma forma que as pessoas usam para ordenar cartas em um jogo de baralho como no pôquer:

18 INSERTION SORT 1) Neste passo é verificado se o 5 é menor que o 3, como essa condição é falsa, então não há troca. 2) É verificado se o quatro é menor que o 5 e o 3, ele só é menor que o 5, então os dois trocam de posição.

19 INSERTION SORT 3)É verificado se o 2 é menor que o 5, 4 e o 3, como ele é menor que 3, então o 5 passa a ocupar a posição do 2, o 4 ocupa a posição do 5 e o 3 ocupa a posição do 4, assim a posição do 3 fica vazia e o 2 passa para essa posição. 4)O mesmo processo de comparação acontece com o número 1, após esse processo o vetor fica ordenado.

20 INSERTION SORT Veja o algoritmo Insertion Sort:

21 Quick sort O Quicksort é o algoritmo mais eficiente na ordenação por comparação. Nele se escolhe um elemento chamado de pivô, a partir disto é organizada a lista para que todos os números anteriores a ele sejam menores que ele, e todos os números posteriores a ele sejam maiores que ele. Ao final desse processo o número pivô já está em sua posição final. Os dois grupos desordenados recursivamente sofreram o mesmo processo até que a lista esteja ordenada.

22 Quick sort O número 3 foi escolhido como pivô, nesse passo é procurado à sua direita um número menor que ele para ser passado para a sua esquerda. O primeiro número menor encontrado foi o 1, então eles trocam de lugar. Agora é procurado um número à sua esquerda que seja maior que ele, o primeiro número maior encontrado foi o 5, portanto eles trocam de lugar.

23 Quick sort 3) O mesmo processo do passo 1 acontece, o número 2 foi o menor número encontrado, eles trocam de lugar. 4) O mesmo processo do passo 2 acontece, o número 4 é o maior número encontrado, eles trocam de lugar.

24 Quick sort 5) O vetor desse exemplo é um vetor pequeno, portanto ele já foi ordenado, mas se fosse um vetor grande, ele seria dividido e recursivamente aconteceria o mesmo processo de escolha de um pivô e comparações.

25 2 1 Veja o algoritmo Quick Sort: enquanto (i<j) faca i<-rt
j<-ra para arq de 1 ate 30 faca pivo<-(vet[rt]+vet[ra]) div 2 enquanto (vet[i]<pivo) faca i<-i+1 fimenquanto Algoritmo "quicksortnão recursivo" var vet : vetor [1..10] de inteiro i,j,l,r,aux,arq,rt,ra : inteiro pivo :inteiro inicio aleatorio 0,100,3 para i de 1 ate 10 faca leia(vet[i]) fimpara i<-1 j<-10 rt<-1 ra<-10 2 1

26 3 4 Veja o algoritmo Quick Sort: se (j>rt) entao rt<-rt ra<-j
fimse se (i<ra) entao rt<-i ra<-ra fimpara fimenquanto para i de 1 ate 10 faca escreval(vet[i]," ") fimalgoritmo enquanto (vet[j]>pivo) faca j<-j-1 fimenquanto se (i<=j) entao aux<-vet[i] vet[i]<-vet[j] vet[j]<-aux i<-i+1 fimse 3 4

27 EXEMPLOS COM MATRIZES Faça um algoritmo para ler uma matriz 3X3 real e imprimir a soma dos elementos da Diagonal principal.  Generalizar para uma matriz NXN;

28 solução

29 Solução generalizada

30 Solução generalizada

31 ai,j = i +j EXEMPLOS COM MATRIZES
Crie uma matriz 7X8 onde cada elemento é a soma dos índices de sua posição dentro da matriz, ou seja: ai,j = i +j

32 solução

33 POR HOJE É SÓ!!!


Carregar ppt "Algoritmos com matrizes e vetores"

Apresentações semelhantes


Anúncios Google