Algoritmia e Programação APROG. Vetores. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/32

Documentos relacionados
Variáveis Compostas. Vanessa Braganholo

Variáveis Compostas. Leonardo Gresta Paulino Murta.

Variáveis Compostas. Leonardo Gresta Paulino Murta.

Algoritmia e Programação APROG. Matrizes. Algoritmia e Java. Nelson Freire (ISEP DEI-APROG 2012/13) 1/28

Vetores Unimensionais

Programação de Computadores I. Aula - Vetores. Professor Ilaim Costa Junior.

Vetores Unimensionais

Vetores Unimensionais

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

Linguagem de Programação III

È um tipo estruturado homogêneo

Lógica de Programação e Algoritmos

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Algoritmia e Programação APROG. Ficheiros de Texto. Java. Nelson Freire (ISEP DEI-APROG 2014/15) 1/18

Algoritmos II Aula 2 Vetores

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Arrays em Java. Alberto Costa Neto DComp - UFS

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz

Técnicas de Programação II

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Arrays (Vetores) Arrays (Vetores) 28/04/ Índices. profs. } Ex1: Se eu preciso manipular 100 nomes de pessoas ao mesmo tempo... é melhor...

AULA 6 - ARRAYS. Array de 10 elementos

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Introdução. Universidade Federal de Uberlândia. Programação Orientada a Objetos. Prof. Fabiano Dorça

Aula 06 Introdução à Programação Matrizes

CONTEÚDO 04 VETORES. Disciplina: Algoritmos e POO Professora: Alba Lopes.

Programação: Vetores

public class ExecScanner1 { public static void main(string[] args) { // TODO code application logic here

Análise de Programação

Variáveis primitivas e Controle de fluxo

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

CURSO DE POO COM JAVA

Aula 2 POO 1 Prática. Profa. Elaine Faria UFU

Arrays. int idade1; int idade2; int idade3; int idade4; int[] idades;

Array em Java. Figura 1 - Exemplo de um array de inteiros

INF1005: Programação 1. Vetores. 02/05/10 (c) Paula Rodrigues 1

Lição 7 Array em Java

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Aula 8 Vetores Cleverton Hentz

Arrays e Marizes. João Paulo Q. dos Santos

Programação de Computadores para GI

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos

Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica

Seleção Múltipla Laços (while, do-while, for) AULA 05

Prof. Rogério Rocha 1

Técnicas de Programação

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

prim = A ; prim = &A[0];

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Lógica de Programação. Lógica de Programação com Java

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

CI208 - Programação de Computadores. Aula 24: Arrays. Prof. MSc. Diego Roberto Antunes

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Programação Orientada a Objetos para Redes de Computadores

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

(Conceito de Variável Indexada, Funções e Procedimentos)

Aula 25: Funções com Arrays

Tabelas e Matrizes. Arrays e Matrizes em Java. Arrays. Isto não é exequível!... Exemplo. Elementos dos Arrays. Necessidade de usarmos Tabelas B[8][6]

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

3. Linguagem de Programação C

Estruturas Compostas Matriz

Comando Portugol (Visualg) Java

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto

Programação científica C++

Aula 10 Modularização Cleverton Hentz

ESTRUTURAS COMPOSTAS VETOR

Linguagem de programação Java

Fundamentos de Programação

Ponteiros de Variáveis

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Universidade Veiga de Almeida Algoritmos e Linguagem I

Subprogramação. Leonardo Gresta Paulino Murta.

Aula 18: Vetores Introdução a Programação Túlio Toffolo & Puca Huachi

Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Algoritmos e Estruturas de Dados I

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Sintaxe Básica do Java. João Paulo Q. dos Santos

Introdução a Programação. Ponteiros e Passagem de Argumentos por Referência

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Introdução. Por que desenvolver ALGORITMO?

Ponteiros e Tabelas. K&R: Capítulo 5

Java Variáveis e Controle Fluxo

Arrays. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Estrutura de dados 1. Ponteiros

TÉCNICO DE INFORMÁTICA - SISTEMAS

Fundamentos de Programação

Introdução à Programação

Linguagem de Programação II Implementação

Transcrição:

APROG Algoritmia e Programação Vetores Algoritmia e Java Nelson Freire (ISEP DEI-APROG 2012/13) 1/32

Arrays Introdução Enquadramento Interesse Noção Tipos Vetor Matriz Vetores Noções Básicas Interesse Uso Declaração Java : Vetor é um Objeto Manipulação de Elementos Indicar/Modificar um Elemento Indicar/Modificar todos Elementos Transferência entre Módulos/Métodos Passagem de Parâmetros Retorno da Função Exemplos Sumário Ordenação de Vetores Métodos de Ordenação Troca Directa Bubble Sort Troca Directa Método Algoritmo Exemplo Variante Nelson Freire (ISEP DEI-APROG 2012/13) 2/32

Arrays Enquadramento 1/2 Arrays São Estruturas de Dados Complexas Nelson Freire (ISEP DEI-APROG 2012/13) 3/32

Arrays Enquadramento 2/2 Categorias de Estruturas de Dados Simples Complexas Classificação segundo quantidade de valores armazenados simultaneamente Simples Permitem armazenar um só valor, de cada vez RAM Representam uma posição da memória principal (RAM) Exemplos Algoritmia: INTEIRO, REAL, CARATER Java: tipos primitivos (ex: int, long, float, double, char) Complexas INTEIRO REAL CARACTER REAL Permitem armazenar múltiplos valores, ao mesmo tempo Exemplos: Arrays Permitem guardar um conjunto de valores do mesmo tipo (todos) Exemplos Notas de alunos (conjunto de reais) Nomes de alunos (conjunto de Strings) Representam conjunto de posições contíguas da RAM ARRAY REAL TEXTO ARRAY TEXTO Nelson Freire (ISEP DEI-APROG 2012/13) 4/32

Arrays Interesse dos Arrays (introdução) 1/2 Problema Envolve grandes quantidades de valores relacionados entre si Exemplo Ler nomes e notas de 20 alunos obtidas numa disciplina Mostrar os nomes dos alunos cuja nota está acima da média Nelson Freire (ISEP DEI-APROG 2012/13) 5/32

Arrays Interesse dos Arrays (introdução) 2/2 Solução Usando apenas estruturas de dados simples ED TEXTO nome1, nome2,, nome20 INTEIRO nota1, nota2,, nota20, soma REAL media INÍCIO // Leitura e soma soma 0 LER(nome1, nota1) soma soma + nota1 LER(nome2, nota2) soma soma + nota2 LER(nome20, nota20) soma soma + nota20 // Média media soma / 20 // Escrita de alunos acima da média SE (nota1>media) ENTÃO ESCREVER(nome1) SE (nota2>media) ENTÃO ESCREVER(nome2) SE (nota20>media) ENTÃO ESCREVER(nome20) FIM 42 variáveis grande quantidade de código repetido Conclusão Estruturas de dados simples podem conduzir a soluções impraticáveis Solução viável Estruturas de dados complexas Nelson Freire (ISEP DEI-APROG 2012/13) 6/32

Arrays Noção de Array Array Estrutura de dados complexa Armazena conjunto de valores Valores todos do mesmo tipo Exemplos Array de números inteiros Array de textos Dimensão é fixa Não modificável em tempo de execução (run-time) Nelson Freire (ISEP DEI-APROG 2012/13) 7/32

Arrays Tipos de Arrays Vetor Matriz Vetor Array Unidimensional Valores organizados de forma linear Tipos de Arrays 12 15 20 14 Matriz Array Bidimensional Valores organizados em linhas e colunas 11 24 27 5 56 18 1 8 34 Nelson Freire (ISEP DEI-APROG 2012/13) 8/32

Arrays Introdução de Arrays Enquadramento Interesse Noção Tipos Vetor Matriz Vetores Noções Básicas Interesse Uso Declaração Java : Vetor é um Objeto Manipulação de Elementos Indicar/Modificar um Elemento Indicar/Modificar todos os Elementos Transferência entre Módulos/Métodos Passagem de Parâmetros Retorno da Função Exemplos Sumário Ordenação de Vetores Métodos de Ordenação Troca Directa Bubble Sort Troca Directa Método Algoritmo Exemplo Variante Nelson Freire (ISEP DEI-APROG 2012/13) 9/32

Vetores Noções Básicas Vetor Constituído por conjunto de elementos Comprimento fixo // Dimensão não modificável em tempo de execução Elementos organizados de forma linear Elementos armazenam valores, todos do mesmo tipo Exemplos: vetor só de reais ou vetor só de texto Elementos funcionam como variáveis simples Acesso aos elementos através de índices Índices Indicam posições dos elementos Números inteiros desde 0 Último índice = comprimento-1 elementos índices elemento 2 valor 10 12 15 10 20 13 14 0 1 2 3 n-2 n-1 comprimento (ou dimensão) n Nelson Freire (ISEP DEI-APROG 2012/13) 10/32

Vetores Armazenar Listas de valores Valores Todos do mesmo tipo Organizados de forma linear Interesse Exemplos Lista de notas de alunos a uma disciplina (conjunto de números inteiros) Português 12 18 15 Lista de disciplinas de um ano escolar (conjunto de Strings) Disciplinas APROG ARQCP ASIST Nelson Freire (ISEP DEI-APROG 2012/13) 11/32

Vetores Preciso Saber Uso Declarar um vetor Java Vetor é um Objeto Manipular elementos de um vetor Um Todos Transferir um vetor entre módulos/métodos Passagem de Parâmetros Retorno da Função Nelson Freire (ISEP DEI-APROG 2012/13) 12/32

Vetores Declaração 1/2 Algoritmia Declaração 1: dimensão definida na declaração Sintaxe: tipo nomevetor[dimensão] Ex: ED: TEXTO nomes[20] RAM nomes[0] nomes[1] nomes[2] nomes[19] 19 = 20-1 Java Vetor é objeto // ver slide 15 Nome do vetor é referência de objeto tipo nomevetor[ ] = new tipo[dimensão]; String nomes[ ] = new String[20]; ou tipo[] nomevetor = new tipo[dimensão]; String[] nomes = new String[20]; Inicializações automáticas Tipo primitivo Numérico: 0 Booleano: false Tipo referência: null (Ex: String) Declaração 2: dimensão definida depois da declaração Sintaxe: tipo nomevetor[ ] criar nomevetor[dimensão] Ex: ED : TEXTO nomes[ ] INÍCIO criar nomes[20] FIM tipo nomevetor[ ]; nomevetor = new tipo[dimensão]; String nomes[ ]; nomes = new String[20]; Nelson Freire (ISEP DEI-APROG 2012/13) 13/32

Vetores Declaração 2/2 Exemplos // Algoritmia ED TEXTO nomes[20], paises[] INTEIRO c INÍCIO c lercomprimento() criar paises[c] FIM // lercomprimento é função do programa // Java public class Exemplo_1 { public static void main(string[] args) { String nomes[] = new String[20]; String paises[]; int c = lercomprimento(); paises = new String[c]; // vetor criado ; elementos inicializados a null // lercomprimento é função particular do programa Nelson Freire (ISEP DEI-APROG 2012/13) 14/32

Vetores Java : Vetor é um Objeto Nome de vetor É referência do objeto que contém os seus elementos // referência = endereço Exemplo Vetor nomes String[] nomes = new String[20]; nomes RAM referência de objeto nomes[0] nomes[1] nomes[2] Objeto nomes[19] Nelson Freire (ISEP DEI-APROG 2012/13) 15/32

Vetores Elemento Manipulação de Elementos Pode ser manipulado individualmente Funciona como uma variável simples Identificado Nome do vetor Índice respetivo Indicar Elemento Algoritmia Sintaxe: Ex: nomevetor[índice] nomes[5] Java nomevetor[índice]; nomes[5] Manipulações Típicas De um elemento De todos os elementos Nelson Freire (ISEP DEI-APROG 2012/13) 16/32

Vetores Algoritmia Manipulação de um Elemento Java Atribuir um valor a um elemento Ex: guardar ou actualizar um elemento Sintaxe: nomevetor[índice] valor Ex: nomes[5] "Ana" nomevetor[índice] = valor; nomes[5] = "Ana"; Atribuir o valor de um elemento a uma variável Sintaxe: variável nomevetor[índice] variável=nomevetor[índice]; Ex: s nomes[5] // s do tipo TEXTO s=nomes[5]; // s do tipo String Nelson Freire (ISEP DEI-APROG 2012/13) 17/32

Vetores Manipulação de todos os Elementos Algoritmia Java Indicar todos os n elementos (n é comprimento vetor) nomevetor.length (atributo) PARA (i 0 ATÉ n-1 PASSO 1) FAZER FPARA nomevetor[i] Ex: Guardar no vetor n notas lidas do teclado PARA (i 0 ATÉ n-1 PASSO 1) FAZER FPARA LER( notas[i] ) Ex: Contar o número de notas superiores a 15 c 0 PARA (i 0 ATÉ n-1 PASSO 1) FAZER SE ( notas[i] > 15 ) ENTÃO c c+1 FSE FPARA for( i=0; i < nomevetor.length; i++ ){ nomevetor[i] Scanner ler =new Scanner(System.in); for(i=0; i<notas.length; i++){ notas[i] = ler.nextint(); c=0; for(i=0; i<notas.length; i++){ if ( notas[i] > 15 ) c++; Nelson Freire (ISEP DEI-APROG 2012/13) 18/32

Arrays Problema Ler os nomes e as notas de 20 alunos obtidas apenas numa disciplina e mostrar os nomes dos alunos cuja nota está acima da média. Solução Estruturas de dados simples ED: TEXTO nome1, nome2,, nome20 INTEIRO nota1, nota2,, nota20, soma REAL media INÍCIO // Leitura e soma soma 0 LER(nome1, nota1) soma soma + nota1 LER(nome2, nota2) soma soma + nota2 LER(nome20, nota20) soma soma + nota20 // Média media soma / 20 // Escrita alunos acima da média SE (nota1>media) ENTÃO ESCREVER(nome1) SE (nota20>media) ENTÃO ESCREVER(nome20) FIM Interesse dos Arrays (conclusão) Arrays ED: TEXTO nomes[20] INTEIRO notas[20], soma, i REAL media INÍCIO // Leitura e soma soma 0 PARA (i 0 ATÉ 19 PASSO 1) FAZER LER(nomes[i], notas[i]) soma soma + notas[i] FPARA // Média media soma / 20 // Escrita alunos acima da média PARA ( i 0 ATÉ 19 PASSO 1 ) FAZER SE ( notas[i]>media ) ENTÃO ESCREVER( nomes[i] ) FPARA Nelson Freire (ISEP DEI-APROG 2012/13) 19/32 FIM 5 variáveis Muito mais fácil escrever Muito mais fácil escrever

Vetores Transferência entre Módulos/Métodos 1/6 Em Java Vetor é objeto basta transferir referência desse objeto indicar nome do vetor Exemplo int[ ] notas = new int[20]; nome do vetor (objeto) notas RAM referência de objeto notas[0] notas[1] notas[2] Objeto notas[19] Nelson Freire (ISEP DEI-APROG 2012/13) 20/32

Vetores Transferência entre Módulos/Métodos 2/6 Formas de Transferir um Vetor Passagem de parâmetros Retorno da função DEFINIR nome (, tipo nomevetor [ ], ) ED // variáveis e constantes locais INÍCIO // corpo do procedimento FDEF Procedimento DEFINIR tipo_retornado nome (, tipo[ ] nomevetor, ) ED // variáveis e constantes locais INÍCIO // corpo da função RETORNAR expressão_tipo_retornado Função FDEF DEFINIR tipo[ ] nome () ED tipo[ ] nomevetor INÍCIO // corpo da função RETORNAR nomevetor FDEF Função Nelson Freire (ISEP DEI-APROG 2012/13) 21/32

Vetores Transferência entre Módulos/Métodos 3/6 Passagem de Parâmetros (1/2) Passada cópia da referência do vetor DEFINIR tipo nome(, tipo nomevetor [ ], ) Módulo acede ao vetor original Pode modificar vetor original Parâmetro formal funciona como parâmetro de entrada e de saída Declaração de um parâmetro formal Para receber referência do vetor Algoritmia Sintaxe: tipo nomevetor[] ou tipo[] nomevetor Ex: DEFINIR ler( INTEIRO vetor[ ], ) Chamada de um módulo Java tipo nomevetor[]; ou tipo[] nomevetor; public static void ler( int vetor[], ){ public static void ler( int[] vetor, ){ Passar referência do vetor (i.e., nome do vetor) Algoritmia Sintaxe: nomevetor Ex: ler(notas, ) Java nomevetor ler(notas, ); Nelson Freire (ISEP DEI-APROG 2012/13) 22/32

Vetores Transferência entre Módulos/Métodos 4/6 Passagem de Parâmetros (2/2) Exemplo (Java) public class Exemplo{ public static void main(string[] args){ int[] vet = new int[3]; vet[2] = 1; m(vet); System.out.println("vet[2]=" + vet[2]); private static void m(int[] v){ v[2]=3; // Programa escreve vet[2]=3 vet vet[0] vet[1] vet[2] v vet vet[0] vet[1] vet[2] v RAM referência x 0 0 1 referência x Na chamada de m referência x 0 0 3 referência x Na execução de m Nelson Freire (ISEP DEI-APROG 2012/13) 23/32

Vetores Transferência entre Módulos/Métodos 5/6 Retorno da Função Retornada referência do vetor Declaração do tipo_retornado da função Tipo vetor Algoritmia Sintaxe: DEFINIR tipo[ ] nomefunção ( ) Ex: DEFINIR INTEIRO[ ] filtrar() DEFINIR tipo[ ] nome() ED tipo[ ] nomevetor INÍCIO // corpo da função RETORNAR nomevetor FDEF Java public static tipo[ ] nomemétodo(){; public static int[ ] filtrar(){ Retorno Referência do vetor (i.e., nome do vetor) Algoritmia Sintaxe: RETORNAR nome_vetor Ex: RETORNAR notas Java return nome_vetor; return notas; Nelson Freire (ISEP DEI-APROG 2012/13) 24/32

Vetores Transferência entre Módulos/Métodos 6/6 Exemplos import java.util.scanner; public class Notas { public static void main(string[] args) { int totnotas = lertotalnotas(); int[] notas = lernotas(totnotas); float m = media(notas); if(m<10) incrementar(notas, m); listar(notas); private static int[] lernotas(int n) { Scanner ler = new Scanner(System.in); int[] vec = new int[n]; for (int i = 0; i < vec.length; i++) { System.out.println("Nota " + (i + 1) + ":"); vec[i] = ler.nextint(); while (vec[i] < 0 vec[i] > 20) { System.out.println("Nota Inválida!!" + "Insira a nota:" + (i + 1) + ":"); vec[i] = ler.nextint(); return vec; private static void listar(int[] vec) { System.out.println("Listagem Notas:") for (int i = 0; i < vec.length; i++) System.out.println(vec[i]); private static float media(int[] v) { float s=0; for (int i = 0; i < v.length; i++) s+=v[i]; return s/v.length; private static int lertotalnotas() { Scanner ler = new Scanner(System.in); System.out.println("Digite o nº notas:"); int n = ler.nextint(); while (n <= 0) { System.out.println("Valor Inválido!! " + "Insira novo nº de notas:"); n = ler.nextint(); return n; private static void incrementar(int[] notas, float media) { int d = 10 - (int) media; if(d>0) for (int i = 0; i < notas.length; i++) if (notas[i] + d > 20) notas[i] = 20; else notas[i] += d; Nelson Freire (ISEP DEI-APROG 2012/13) 25/32

Arrays Introdução de Arrays Enquadramento Interesse Noção Tipos Vetores Matrizes Vetores Noções Básicas Interesse Uso Declaração Java : Vetor é um Objeto Sumário Manipulação de Elementos Indicar/Modificar um Elemento Indicar/Modificar todos os Elementos Transferência entre Módulos/Métodos Passagem de Parâmetros Retorno da Função Exemplos Ordenação de Vetores Métodos de Ordenação Troca Directa Bubble Sort Troca Directa Método Algoritmo Exemplo Variante Nelson Freire (ISEP DEI-APROG 2012/13) 26/32

Ordenação de Vetores Métodos Há vários métodos Exemplos Troca Directa Bubble Sort Nelson Freire (ISEP DEI-APROG 2012/13) 27/32

Ordenação de Vetores Troca Directa : Método 1/5 Ordenar, sucessivamente, os primeiros n-1 elementos do vetor (n = comprimento do vetor) Exemplo: 1ª Ordenação 2ª Ordenação 3ª Ordenação Ordenar o i-ésimo elemento Comparar esse elemento, sucessivamente, com cada um dos elementos seguintes Exemplo Elemento 0: i i i j j j Elemento 1: i i j j Elemento 2: i j Após cada comparação, trocar os elementos comparados (i e j) se Ordenação crescente: v[j] < v[i] Ordenação decrescente: v[j] > v[i] 6 5 2 8 menor maior Nelson Freire (ISEP DEI-APROG 2012/13) 28/32

Ordenação de Vetores Troca Directa : Exemplo 2/5 Ordenação Crescente 6 5 7 3 i i (i=0) 6 5 7 3 5 6 7 3 5 6 7 3 j j i 5 6 7 3 j 3 6 7 5 i i (i=1) 3 6 7 5 3 6 7 5 j j 3 5 7 6 i (i=2) 3 5 7 6 3 5 6 7 j Nelson Freire (ISEP DEI-APROG 2012/13) 29/32

Ordenação de Vetores Troca Directa : Algoritmo 3/5 Algoritmo Ordenação Crescente PARA ( i 0 ATÉ n-2 PASSO 1 ) FAZER PARA( j i+1 ATÉ n-1 PASSO 1 ) FAZER SE ( v[j] < v[i] ) ENTÃO tmp v[i] v[i] v[j] v[j] tmp FSE FPARA FPARA i comprimento do vetor (n) 0 n-2 j i+1 n-1 Ordenação Decrescente Única alteração v[j] > v[i] Nelson Freire (ISEP DEI-APROG 2012/13) 30/32

Ordenação de Vetores Troca Directa : Exemplo de Ordenação Alfabética de Strings 4/5 Algoritmo ED: TEXTO tmp, nomes[ ] INTEIRO i, j, n ALG INÍCIO REPETIR LER(n) ENQUANTO n<=0 criar nomes[n] PARA ( i 0 ATÉ n-2 PASSO 1 ) FAZER PARA( j i+1 ATÉ n-1 PASSO 1 ) FAZER SE ( nomes[j] < nomes[i] ) ENTÃO tmp nomes[i] nomes[i] nomes[j] nomes[j] tmp FSE FPARA FPARA FIM Java public class TrocaDirecta{ public static void main(string[] args) { String tmp, nomes[ ]; int i,j,n; Scanner ler = new Scanner(System.in); do { System.out.print("N:") n=ler.nextint(); while(n<=0); nomes = new String[n]; for ( i=0; i<=n-2; i++ ) { for( j=i+1; j<=n-1; j++ ) { if ( nomes[j].compareto( nomes[i] ) < 0 ) { tmp = nomes[i]; nomes[i] = nomes[j]; nomes[j] = tmp; Nelson Freire (ISEP DEI-APROG 2012/13) 31/32

Ordenação de Vetores Troca Directa : Algoritmo mais Eficiente 5/5 Algoritmo Ordenação Crescente PARA ( i 0 ATÉ n-2 PASSO 1 ) FAZER menor i PARA( j i+1 ATÉ n-1 PASSO 1 ) FAZER SE ( v[j] < v[menor] ) ENTÃO menor j FSE FPARA SE ( menor!= i ) ENTÃO tmp v[i] v[i] v[menor] v[menor] tmp FSE FPARA i comprimento do vetor (n) 0 n-2 j i+1 n-1 Ordenação Decrescente Única alteração v[j] > v[i] Nelson Freire (ISEP DEI-APROG 2012/13) 32/32