Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Aulas Anteriores ° Tipos definidos pelo utilizador ° Definição de tipos baseados no construtor array ° Utilização de arrays como parâmetros de comunicação com procedimentos e funções ° Definição de tipos enumerados e de gama ° Exercícios
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Esta Aula ° Operações sobre arrays. ° Ordenação de elementos (sorting) ° Selection Sort ° Bubble Sort ° Exercícios
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Ordenação de elementos de um array Dois algorítmos possíveis:Dois algorítmos possíveis: ° Ordenação por selecção ou sequencial (selection sort) ° Ordenação por bolha (bubble sort) A índice A Ordenação crescente inicial final
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Ordenação por selecção ou sequencial A – array a ordenar N – nº de elementos do array... for i:=1 to N-1 do for j:=i+1 to N do if A[ i ] > A[ j ] then troca ( A [ i ], A[ j ] ); A i =1, j = inicial final i =2, j =3 j =4 j =4 j =6 j =6 i =3, j =4 j =6 j =6 i =4, j =5 j =6 j =6 i =5, j =6
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Ordenação por bolha A – array a ordenar N – nº de elementos do array... passagens:=0; repeat passagens:=passagens+1; houve_troca:=false; for i:=1 to N-1 do if A[ i ] > A[ i+1 ] then begin troca ( A [ i ], A[ i+1 ] ); houve_troca:=true; end; until not houve_troca; A passagens = inicial final passagens =2 passagens =3 passagens =4 passagens =5
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Comparação dos dois algorítmos Ordenação por selecção:Ordenação por selecção: ° Nº de comparações é sempre o mesmo, i.e.: N-1 + N-2 + N = (N-1)*N/2 N-1 + N-2 + N = (N-1)*N/2 ° Ao fim de K iterações (do ciclo exterior) os primeiros K elementos estão ordenados. Ordenação por bolha:Ordenação por bolha: ° Nº de comparações pode ser igual ao caso anterior (superior se for sem optimização) ou bastante menor se o array já estiver próximo da ordenação correcta. ° Ao fim de K passagens os últimos K elementos estão ordenados.