TSI - Tecnologia em Sistemas para InternetTSI - Tecnologia em Sistemas para Internet
TSI32B – Estrutura, Pesquisa e Ordena...
TSI33A - Banco de Dados I 2/64
AtençãoAtenção
Este material é uma introdução aos conceitos, técnicas e recursos fundamenta...
TSI33A – Banco de Dados 1TSI33A – Banco de Dados 1
Cadeia de Caracteres em JavaCadeia de Caracteres em Java
Prof. Me. Sidg...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 44//6464
1.1. CharChar
● Um únicoúnico va...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 55//6464
char como Objetoscomo Objetos
● ...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 66//6464
MétodosMétodos staticstatic da C...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 77//6464
MétodosMétodos staticstatic da C...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 88//6464
MétodosMétodos staticstatic da C...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 99//6464
MétodosMétodos instanceinstance ...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1010//6464
2. Cadeia de Caracteres (2. Ca...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1111//6464
CriandoCriando StringsStrings
...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1212//6464
Sequência deSequência de SCAPE...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1313//6464
3. Conversão3. Conversão Strin...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1414//6464
4. Conversão número para4. Con...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1515//6464
5. Manipulando5. Manipulando S...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1616//6464
Coletando umColetando um Carac...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1717//6464
Coletando umaColetando uma Sub...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1818//6464
Outros Exemplos de Manipulação...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1919//6464
Documentação da ClasseDocument...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2020//6464
MétodosMétodos instanceinstanc...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2121//6464
MétodosMétodos instanceinstanc...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2222//6464
MétodosMétodos instanceinstanc...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2323//6464
MétodosMétodos instanceinstanc...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2424//6464
MétodosMétodos instanceinstanc...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2525//6464
Segmentando oSegmentando o Pat...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2626//6464
6. A Classe6. A Classe StringB...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2727//6464
Criação e Capacidade de objeto...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2828//6464
Inserir valores de objetosInse...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2929//6464
Remover valores de objetosRemo...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3030//6464
Trabalhando comTrabalhando com...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3131//6464
ExercíciosExercícios
● Acesse ...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3232//6464
CréditosCréditos
●
MaterialMat...
TSI33A – Banco de Dados 1TSI33A – Banco de Dados 1
Ordenação Interna – Parte IOrdenação Interna – Parte I
Prof. Me. Sidgle...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3434//6464
1. Ordenação de Dados1. Ordena...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3535//6464
Por que Ordenar?Por que Ordena...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3636//6464
O que éO que é Ordenação Inter...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3737//6464
ConsideraçõesConsiderações
● P...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3838//6464
2. Classe2. Classe MySortingCl...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3939//6464
O MétodoO Método swap()swap()
...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4040//6464
O MétodoO Método isGreater()is...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4141//6464
O MétodoO Método print()print(...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4242//6464
3.3. MétodoMétodo Insertion So...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4343//6464
ExemplificaçãoExemplificação I...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4444//6464
MétodoMétodo insertionSort()in...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4545//6464
4.4. MétodoMétodo Bubble SortB...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4646//6464
ExemplificaçãoExemplificação B...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4747//6464
MétodoMétodo bubbleSort()bubbl...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4848//6464
5. Método5. Método Selection S...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4949//6464
ExemplificaçãoExemplificação S...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5050//6464
MétodoMétodo selectionSort()se...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5151//6464
6. Simuladores6. Simuladores
●...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5252//6464
CréditosCréditos
●
MaterialMat...
TSI33A – Banco de Dados 1TSI33A – Banco de Dados 1
Ordenação Interna – Parte IIOrdenação Interna – Parte II
Prof. Me. Sidg...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5454//6464
1.1. MétodoMétodo Merge SortMe...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5555//6464
ExemplificaçãoExemplificação M...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5656//6464
O MétodoO Método isGreaterEqua...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5757//6464
MétodoMétodo mergeSort()mergeS...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5858//6464
MétodoMétodo mergeSort()mergeS...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5959//6464
1.1. MétodoMétodo Quick SortQu...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6060//6464
MétodoMétodo quickSort()quickS...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6161//6464
MétodoMétodo quickSort()quickS...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6262//6464
ConsideraçõesConsiderações qui...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6363//6464
6. Simuladores6. Simuladores
●...
TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6464//6464
CréditosCréditos
●
MaterialMat...
Próximos SlideShares
Carregando em…5
×

Aulas TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)

448 visualizações

Publicada em

Este material é uma introdução aos conceitos, técnicas e recursos fundamentais para a manipulação de cadeia de caracteres, pilhas, listas, filas, tabela hash e grafos, bem como a pesquisa e ordenação de dados.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
448
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aulas TSI32B - Estrutura, Pesquisa e Ordenação de Dados (TSI UTFPR-Toledo)

  1. 1. TSI - Tecnologia em Sistemas para InternetTSI - Tecnologia em Sistemas para Internet TSI32B – Estrutura, Pesquisa e Ordenação de DadosTSI32B – Estrutura, Pesquisa e Ordenação de Dados Prof. Me. Sidgley Camargo de AndradeProf. Me. Sidgley Camargo de Andrade http://pessoal.utfpr.edu.br/sidgleyandrade
  2. 2. TSI33A - Banco de Dados I 2/64 AtençãoAtenção Este material é uma introdução aos conceitos, técnicas e recursos fundamentais para aEste material é uma introdução aos conceitos, técnicas e recursos fundamentais para a manipulação de cadeia de caracteres, pilhas, listas, filas, tabela hash e grafos, bemmanipulação de cadeia de caracteres, pilhas, listas, filas, tabela hash e grafos, bem como a pesquisa e ordenação de dados.como a pesquisa e ordenação de dados. Organização do material:Organização do material: Semana 01 Cadeia de Caracteres em Java Semana 07 Em desenvolvimento Semana 02 Ordenação Interna – Parte I Semana 08 Em desenvolvimento Semana 03 Ordenação Interna – Parte II (em desenvolvimento) Semana 09 Em desenvolvimento Semana 04 Em desenvolvimento Semana 10 Em desenvolvimento Semana 05 Em desenvolvimento Semana 11 Em desenvolvimento Semana 06 Em desenvolvimento Semana 12 Semana 13 Em desenvolvimento
  3. 3. TSI33A – Banco de Dados 1TSI33A – Banco de Dados 1 Cadeia de Caracteres em JavaCadeia de Caracteres em Java Prof. Me. Sidgley Camargo de Andrade Semana 01
  4. 4. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 44//6464 1.1. CharChar ● Um únicoúnico valor de caracter corresponde ao tipo primitivotipo primitivo char: ● Um char é um valor de 8 bits8 bits, que pode assumir valores entre 00 e 255255. Tabelas padronizadas estabelecem correspondências entre valores numéricos e símbolos gráficos (e.g. ASCII estendidaASCII estendida) char ch = 'T'; // Unicode for uppercase Greek omega character -> Ω char uniChar = 'u03A9'; // an array of chars char[] charArray = { 'T', 'S', 'I', '3', '2', 'B' }; char ch = 'T'; // Unicode for uppercase Greek omega character -> Ω char uniChar = 'u03A9'; // an array of chars char[] charArray = { 'T', 'S', 'I', '3', '2', 'B' }; short i; System.out.print("Dec tCharn"); for(i=32;i<255;i++) { ch = (char) i; System.out.format("%dt%cn",i,ch); } short i; System.out.print("Dec tCharn"); for(i=32;i<255;i++) { ch = (char) i; System.out.format("%dt%cn",i,ch); }
  5. 5. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 55//6464 char como Objetoscomo Objetos ● Em orientação a objetos é possível usar um charchar como um objeto (e.g. argumento de um método em que se espera um objeto do tipo charchar). ● Um objeto do tipo de caracteres contém um único campo, cujo tipo é charchar, e uma série de métodos de manipulaçãométodos de manipulação de caracteres. ● O compilador Javacompilador Java converte automaticamente para um objetoobjeto charchar quando um charchar primitivoprimitivo for atribuído a um objeto (i.e. autoboxingautoboxing ou unboxingunboxing). Character ch = new Character('t');Character ch = new Character('t'); Character ch = 't';Character ch = 't'; Atenção!Atenção! A classeA classe CharacterCharacter é imutável, uma vez criado o objeto não pode seré imutável, uma vez criado o objeto não pode ser alterado.alterado. Atenção!Atenção! A classeA classe CharacterCharacter é imutável, uma vez criado o objeto não pode seré imutável, uma vez criado o objeto não pode ser alterado.alterado.
  6. 6. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 66//6464 MétodosMétodos staticstatic da Classeda Classe Character ● Determina se o valor do charchar é uma letraletra ou um dígitodígito ● Determina se o valor do charchar é uma letraletra ou dígitodígito Character ch = 'a'; System.out.println(Character.isLetter(ch)); // true System.out.println(Character.isDigit(ch)); // false Character ch = 'a'; System.out.println(Character.isLetter(ch)); // true System.out.println(Character.isDigit(ch)); // false boolean isLetter(char ch); boolean isDigit(char ch); boolean isLetter(char ch); boolean isDigit(char ch); Método Character ch = '%'; System.out.println(Character.isLetterOrDigit(ch)); // false Character ch = '%'; System.out.println(Character.isLetterOrDigit(ch)); // false boolean isLetterOrDigit(char ch);boolean isLetterOrDigit(char ch);Método
  7. 7. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 77//6464 MétodosMétodos staticstatic da Classeda Classe Character + ● Determina se o valor do charchar é um espaço em brancoespaço em branco ● Determina se o valor do charchar é uma letra maiúsculamaiúscula ou minúsculaminúscula Character ch = 'a'; System.out.println(Character.isUpperCase(ch)); // false System.out.println(Character.isLowerCase(ch)); // true Character ch = 'a'; System.out.println(Character.isUpperCase(ch)); // false System.out.println(Character.isLowerCase(ch)); // true boolean isUpperCase(char ch); boolean isLowerCase(char ch); boolean isUpperCase(char ch); boolean isLowerCase(char ch); Character ch = 'a'; System.out.println(Character.isWhitespace(ch)); // false Character ch = 'a'; System.out.println(Character.isWhitespace(ch)); // false boolean isWhitespace(char ch);boolean isWhitespace(char ch);Método Método
  8. 8. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 88//6464 MétodosMétodos staticstatic da Classeda Classe Character ++ ● Retorna a maiúsculamaiúscula ou minúsculaminúscula do valor charchar Character ch = new Character('a'); ch = Character.toUpperCase(ch); System.out.println( ch ); // 'A' ch = Character.toUpperCase(ch); System.out.println( ch ); // 'a' Character ch = new Character('a'); ch = Character.toUpperCase(ch); System.out.println( ch ); // 'A' ch = Character.toUpperCase(ch); System.out.println( ch ); // 'a' char toUpperCase(char ch); char toLowerCase(char ch); char toUpperCase(char ch); char toLowerCase(char ch); Método
  9. 9. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 99//6464 MétodosMétodos instanceinstance da Classeda Classe Character ● Retorna um objetoobjeto StringString do objeto — StringString de charchar ● ComparaCompara dois objetos de charchar numericamente String s = new String( ch.toString() ); System.out.println( ch ); // "a" String s = new String( ch.toString() ); System.out.println( ch ); // "a" toString(char ch);toString(char ch); Character ch = new Character('a'); System.out.println( ch.compareTo('a') ); // 0 (igual) >0< (diferente) Character ch = new Character('a'); System.out.println( ch.compareTo('a') ); // 0 (igual) >0< (diferente) int CompareTo(char anotherCharacter);int CompareTo(char anotherCharacter); Atenção!Atenção! A lista completa dos métodos está disponível no endereçoA lista completa dos métodos está disponível no endereço http://docs.oracle.com/javase/8/docs/api/java/lang/Character.htmlhttp://docs.oracle.com/javase/8/docs/api/java/lang/Character.html Atenção!Atenção! A lista completa dos métodos está disponível no endereçoA lista completa dos métodos está disponível no endereço http://docs.oracle.com/javase/8/docs/api/java/lang/Character.htmlhttp://docs.oracle.com/javase/8/docs/api/java/lang/Character.html Método Método
  10. 10. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1010//6464 2. Cadeia de Caracteres (2. Cadeia de Caracteres (StringString)) ● Cadeia de caracteres ou StringString é amplamente utilizada na programação. ● É representada como um arrayarray de caracteres codificados seguindo uma tabela de código de caracteres (e.g. ASCII). – No terminal do GNU-Linux exetue: man ascci ● Em Java, StringsStrings são objetosobjetos, portanto, possuem um conjunto de métodos de manipulaçãométodos de manipulação. Atenção!Atenção! A classeA classe StringString é imutável, portanto, uma vez que é criado um objetoé imutável, portanto, uma vez que é criado um objeto StringString este não pode ser alterado. Desta forma, os métodos dessaeste não pode ser alterado. Desta forma, os métodos dessa classe retornam sempre uma nova string que contém o resultado daclasse retornam sempre uma nova string que contém o resultado da operação.operação. Atenção!Atenção! A classeA classe StringString é imutável, portanto, uma vez que é criado um objetoé imutável, portanto, uma vez que é criado um objeto StringString este não pode ser alterado. Desta forma, os métodos dessaeste não pode ser alterado. Desta forma, os métodos dessa classe retornam sempre uma nova string que contém o resultado daclasse retornam sempre uma nova string que contém o resultado da operação.operação.
  11. 11. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1111//6464 CriandoCriando StringsStrings ● Como uma série de caracterescaracteres delimitados por aspas duplas (StringString literalliteral) ● Como uma objeto (newnew + construtorconstrutor) String disciplina = "TSI32B"; System.out.println(disciplina); String disciplina = "TSI32B"; System.out.println(disciplina); OO autoboxingautoboxing também é aplicada paratambém é aplicada para StringsStringsOO autoboxingautoboxing também é aplicada paratambém é aplicada para StringsStrings char[] discArray = { 'T', 'S', 'I', '3', '2', 'B' }; String discString = new String(discArray); System.out.println(discString); char[] discArray = { 'T', 'S', 'I', '3', '2', 'B' }; String discString = new String(discArray); System.out.println(discString); String disciplina = new String("TSI32B"); System.out.println(disciplina); String disciplina = new String("TSI32B"); System.out.println(disciplina); OUOU
  12. 12. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1212//6464 Sequência deSequência de SCAPESCAPE ● Um caracter precedido por uma barra invertida é uma sequência de escape, e tem um significado especial para o compilador. t Insere um tab no texto b Insere um backspace no texto n Insere uma nova linha no texto r Insere um retorno de carro no texto f Insere uma formatação no texto ' Insere uma aspa simples no texto " Insere uma aspa dupla no texto Insere uma barra invertida no texto System.out.println("Disciplinat"TSI32B""); // Disciplina "TSI32B" System.out.println("Disciplinat"TSI32B""); // Disciplina "TSI32B" String disciplina = "DisciplinanTSI32B"; System.out.println(disciplina); // Disciplina // TSI32B String disciplina = "DisciplinanTSI32B"; System.out.println(disciplina); // Disciplina // TSI32B
  13. 13. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1313//6464 3. Conversão3. Conversão String para númeropara número ● Através do método estático valueOf(valueOf(str)) das subclasses de números (ByteByte, IntegerInteger, DoubleDouble, FloatFloat, LongLong e ShortShort). ● Através do método estático parse<Tipo>(parse<Tipo>(str)) das subclasses de números. byte vByte = Byte.valueOf(str).byteValue(); int vInt = Integer.valueOf(str).intValue(); double vFloat = Float.valueOf(str).floatValue(); double vDouble = Double.valueOf(str).doubleValue(); long vLong = Long.valueOf(str).longValue(); short vShort = Short.valueOf(str).shortValue(); byte vByte = Byte.valueOf(str).byteValue(); int vInt = Integer.valueOf(str).intValue(); double vFloat = Float.valueOf(str).floatValue(); double vDouble = Double.valueOf(str).doubleValue(); long vLong = Long.valueOf(str).longValue(); short vShort = Short.valueOf(str).shortValue(); byte vByte = Byte.parseByte(str); int vInt = Integer.parseInt(str); double vFloat = Float.parseFloat(str); double vDouble = Double.parseDouble(str); long vLong = Long.parseLong(str); short vShort = Short.parseShort(str); byte vByte = Byte.parseByte(str); int vInt = Integer.parseInt(str); double vFloat = Float.parseFloat(str); double vDouble = Double.parseDouble(str); long vLong = Long.parseLong(str); short vShort = Short.parseShort(str); OUOU
  14. 14. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1414//6464 4. Conversão número para4. Conversão número para String ● Através do método estático toString(toString(num)) das subclasses de números. ● Através da concatenação com uma string vazia (casting forçadocasting forçado) ● Através do método estático valueOf(valueOf(num)) str = Byte.toString(vByte); str = Integer.toString(vInt); str = Float.toString(vFloat); str = Double.toString(vDouble); str = Long.toString(vLong); str = Short.toString(vShort); str = Byte.toString(vByte); str = Integer.toString(vInt); str = Float.toString(vFloat); str = Double.toString(vDouble); str = Long.toString(vLong); str = Short.toString(vShort); String str = "" + vByte; String str = "" + vInt; String str = "" + vFloat; String str = "" + vByte; String str = "" + vInt; String str = "" + vFloat; OUOU OUOU String str = String.valueOf(vByte); String str = String.valueOf(vInt); String str = String.valueOf(vFloat); String str = String.valueOf(vByte); String str = String.valueOf(vInt); String str = String.valueOf(vFloat);
  15. 15. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1515//6464 5. Manipulando5. Manipulando Strings ● A classe StringString possui um conjunto de métodos para – examinar o conteúdoexaminar o conteúdo de strings, – encontrar caracteres ou substringsencontrar caracteres ou substrings dentro de uma String, – entre outras operaçõesoutras operações necessária no dia a dia do desenvolver Java.
  16. 16. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1616//6464 Coletando umColetando um CaracterCaracter String anotherPalindrome = "Niagara. O roar again!"; char aChar = anotherPalindrome.charAt(9); String anotherPalindrome = "Niagara. O roar again!"; char aChar = anotherPalindrome.charAt(9); Qual caracter será exibido comQual caracter será exibido com a execução do comandoa execução do comando System.out.print(aChar)System.out.print(aChar)?? Qual caracter será exibido com a execução do comandoQual caracter será exibido com a execução do comando System.out.print(System.out.print(anotherPalindrome.charAt(anotherPalindrome.length()/2)))??
  17. 17. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1717//6464 Coletando umaColetando uma SubstringSubstring String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15); String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15); String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11); String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11);
  18. 18. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1818//6464 Outros Exemplos de ManipulaçãoOutros Exemplos de Manipulação ● Retorna uma StringString removendoremovendo da esquerda e direita os espaços em branco ● Retorna uma SStringtring convertida para minúsculaminúscula String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(10, 15).trim(); String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(10, 15).trim(); String palindrome = "Niagara. O roar again!"; palindrome = palindrome.toLowerCase(); String palindrome = "Niagara. O roar again!"; palindrome = palindrome.toLowerCase();
  19. 19. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 1919//6464 Documentação da ClasseDocumentação da Classe String Atenção!Atenção! A lista completa dos métodos está disponível no endereçoA lista completa dos métodos está disponível no endereço http://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttp://docs.oracle.com/javase/8/docs/api/java/lang/String.html Atenção!Atenção! A lista completa dos métodos está disponível no endereçoA lista completa dos métodos está disponível no endereço http://docs.oracle.com/javase/8/docs/api/java/lang/String.htmlhttp://docs.oracle.com/javase/8/docs/api/java/lang/String.html
  20. 20. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2020//6464 MétodosMétodos instanceinstance da Classeda Classe String ● ComparaCompara duas stringsstrings de forma lexicográfica ● ComparaCompara dois objetos de stringsstrings String str = new String("TSI32B"); System.out.println(str.compareTo("tsi32b")); // != 0 (diferente) System.out.println(str.compareToIgnoreCase("tsi32b")); // 0 (igual) String str = new String("TSI32B"); System.out.println(str.compareTo("tsi32b")); // != 0 (diferente) System.out.println(str.compareToIgnoreCase("tsi32b")); // 0 (igual) int compareTo(String anotherString); int compareToIgnoreCase(String anotherString); int compareTo(String anotherString); int compareToIgnoreCase(String anotherString); String str = new String("TSI32B"); System.out.println(str.equals("tsi32b")); // false System.out.println(str.equalsIgnoreCase("tsi32b")); // true String str = new String("TSI32B"); System.out.println(str.equals("tsi32b")); // false System.out.println(str.equalsIgnoreCase("tsi32b")); // true boolean equals(String anotherString); boolean equalsIgnoreCase(String anotherString); boolean equals(String anotherString); boolean equalsIgnoreCase(String anotherString); Método Método
  21. 21. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2121//6464 MétodosMétodos instanceinstance da Classeda Classe String + ● Retorna o valor do caractere de uma posiçãoposição específica da stringstring ● Retorna a posiçãoposição específica de um caracter ou substringsubstring dentro da stringstring String str = new String("TSI32B"); System.out.print(str.charAt(0)); // 'T' System.out.print(str.charAt(6)); // String index out of range: 6 String str = new String("TSI32B"); System.out.print(str.charAt(0)); // 'T' System.out.print(str.charAt(6)); // String index out of range: 6 char charAt(int index);char charAt(int index); String str = new String("TSI32B"); System.out.print(str.indexOf("S")); // 1 System.out.print(str.indexOf("SB")); // -1 (não encontrou) String str = new String("TSI32B"); System.out.print(str.indexOf("S")); // 1 System.out.print(str.indexOf("SB")); // -1 (não encontrou) int indexOf(String str); (primeira ocorrência) int lastIndexOf(String str); (última ocorrência) int indexOf(String str); (primeira ocorrência) int lastIndexOf(String str); (última ocorrência) Método Método
  22. 22. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2222//6464 MétodosMétodos instanceinstance da Classeda Classe String ++ ● Testa se a string termina com um sufixo específico ● Retorna truetrue se length()length() é 0 String str = new String("TSI32B"); System.out.print(str.endsWith("32b")); // false String str = new String("TSI32B"); System.out.print(str.endsWith("32b")); // false boolean endsWith(String suffix);boolean endsWith(String suffix); String str = new String(); System.out.print(str.isEmpty()); // true str = "TSI32B"; System.out.print(str.isEmpty()); // false String str = new String(); System.out.print(str.isEmpty()); // true str = "TSI32B"; System.out.print(str.isEmpty()); // false booean isEmpty();booean isEmpty(); Método Método
  23. 23. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2323//6464 MétodosMétodos instanceinstance da Classeda Classe String +++ ● Retorna o tamanhotamanho da stringstring ● ConcatenaConcatena a str2str2 ao final da str1str1 String str = "TSI32B"; System.out.print(str.length()); // 6 String str = "TSI32B"; System.out.print(str.length()); // 6 int length();int length(); String str1 = new String("TSI"); String str2 = new String("32B"); str1 = str1.concat(str2); System.out.print(str1); // "TSI32B" String str1 = new String("TSI"); String str2 = new String("32B"); str1 = str1.concat(str2); System.out.print(str1); // "TSI32B" String concat(String str);String concat(String str); Método Método
  24. 24. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2424//6464 MétodosMétodos instanceinstance da Classeda Classe String ++++ ● Retorna um valor lógico se a String contêm a sequência de caracteres ● Substitui cada caracter ou substringsubstring e retorna uma nova String String str = "TSI32B"; System.out.print(str.contains("I32")); String str = "TSI32B"; System.out.print(str.contains("I32")); boolean contains(CharSequence s);boolean contains(CharSequence s); String str = "TSI31A"; str = str.replace("31A", "32B"); System.out.print(str); String str = "TSI31A"; str = str.replace("31A", "32B"); System.out.print(str); String replace(char oldChar, char newChar); String replace(CharSequence target, CharSequence replacement); String replace(char oldChar, char newChar); String replace(CharSequence target, CharSequence replacement); Método Método
  25. 25. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2525//6464 Segmentando oSegmentando o PathPath de um Arquivode um Arquivo final static String fullPath = "/home/user/index.html"; static String pathSeparator = "/", extensionSeparator = "."; public static String extension() { int dot = fullPath.lastIndexOf(extensionSeparator); return fullPath.substring(dot + 1); } public static String filename() { int dot = fullPath.lastIndexOf(extensionSeparator); int sep = fullPath.lastIndexOf(pathSeparator); return fullPath.substring(sep + 1, dot); } public static String path() { int sep = fullPath.lastIndexOf(pathSeparator); return fullPath.substring(0, sep); } public static void main(String[] args) { System.out.println("Extension = " + extension()); System.out.println("Filename = " + filename()); System.out.println("Path = " + path()); } Saída do Programa Extension = html Filename = index Path = /home/user
  26. 26. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2626//6464 6. A Classe6. A Classe StringBuilderStringBuilder ● A classe StringBuilderStringBuilder possui o mesmo propósito da classe String, contudo, proporciona maior performanceperformance na manipulação de grandes cadeiasgrandes cadeias de caracteres. ● Internamente, os objetos dessa classe são tratados como um array dearray de comprimento variávelcomprimento variável. Atenção!Atenção! A classeA classe StringBuilderStringBuilder éé mutávelmutável, portanto, uma vez que é criado, portanto, uma vez que é criado um objetoum objeto StringBuilderStringBuilder este pode ser alterado. Desta forma, oseste pode ser alterado. Desta forma, os métodos dessa classe não forçam a criação de uma novamétodos dessa classe não forçam a criação de uma nova StringString.. Atenção!Atenção! A classeA classe StringBuilderStringBuilder éé mutávelmutável, portanto, uma vez que é criado, portanto, uma vez que é criado um objetoum objeto StringBuilderStringBuilder este pode ser alterado. Desta forma, oseste pode ser alterado. Desta forma, os métodos dessa classe não forçam a criação de uma novamétodos dessa classe não forçam a criação de uma nova StringString..
  27. 27. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2727//6464 Criação e Capacidade de objetosCriação e Capacidade de objetos StringBuilderStringBuilder ● CriandoCriando um objeto StringBuilder ● CapacidadeCapacidade de um objeto StringBuilder StringBuilder sb = new StringBuilder();StringBuilder sb = new StringBuilder(); OUOU StringBuilder sb = new StringBuilder("Greetings");StringBuilder sb = new StringBuilder("Greetings"); System.out.print( sb.capacity() );System.out.print( sb.capacity() );
  28. 28. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2828//6464 Inserir valores de objetosInserir valores de objetos StringBuilderStringBuilder ● Métodos para inseririnserir valores no objeto StringBuilder StringBuilder sb = new StringBuilder(); sb.append("TSI"); sb.append(32); sb.append('B'); System.out.print(sb); // TSI32B StringBuilder sb = new StringBuilder(); sb.append("TSI"); sb.append(32); sb.append('B'); System.out.print(sb); // TSI32B StringBuilder append(Object obj); // ou tipos primitivosStringBuilder append(Object obj); // ou tipos primitivosMétodo StringBuilder sb = new StringBuilder(); sb.insert(0,32); sb.insert(0,"TSI"); sb.insert(5,'B'); System.out.print(sb); // TSI32B StringBuilder sb = new StringBuilder(); sb.insert(0,32); sb.insert(0,"TSI"); sb.insert(5,'B'); System.out.print(sb); // TSI32B StringBuilder insert(int offset, Object obj);StringBuilder insert(int offset, Object obj);Método
  29. 29. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 2929//6464 Remover valores de objetosRemover valores de objetos StringBuilderStringBuilder ● Método para removerremover valores do objeto StringBuilder StringBuilder sb = new StringBuilder("TSI32B"); sb.delete(0,3); sb.deleteCharAt(2); System.out.print(sb); // 32 StringBuilder sb = new StringBuilder("TSI32B"); sb.delete(0,3); sb.deleteCharAt(2); System.out.print(sb); // 32 StringBuilder delete(int start, int end); StringBuilder deleteCharAt(int index); StringBuilder delete(int start, int end); StringBuilder deleteCharAt(int index); Método Atenção!Atenção! A lista completa dos métodos está disponível no endereçoA lista completa dos métodos está disponível no endereço http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.htmlhttp://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html Atenção!Atenção! A lista completa dos métodos está disponível no endereçoA lista completa dos métodos está disponível no endereço http://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.htmlhttp://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html
  30. 30. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3030//6464 Trabalhando comTrabalhando com StringString ee StringBuilderStringBuilder ● As classes StringString e StringBuilderStringBuilder possuem o propósito de manipulação de Strings, contudo, não possuem os mesmos métodos (e.g. reverse()) ● Considere a criação do objeto abaixo. Como você reverteriareverteria a palavra "B23SIT" na ordem inversa com a classe String? ● Com a conversão do objeto s para a classe StringBuilderStringBuilder pode- se aplicar o métido reversereverse() String s = new String("B23IST");String s = new String("B23IST"); StringBuilder sb = new StringBuilder(s); sb.reverse(); System.out.print(sb); // TSI32B StringBuilder sb = new StringBuilder(s); sb.reverse(); System.out.print(sb); // TSI32B
  31. 31. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3131//6464 ExercíciosExercícios ● Acesse o endereço abaixo e responsa as questões: http://docs.oracle.com/javase/tutorial/java/data/QandE/characters-questions.html ● Em seguida confira o resultado das questões com o gabarito no endereço http://docs.oracle.com/javase/tutorial/java/data/QandE/characters-answers.html
  32. 32. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3232//6464 CréditosCréditos ● MaterialMaterial – The Java™ Tutorials. 2011. Disponível em: http://docs.oracle.com/javase/tutorial/java/index.html. Acessado em: 02 jan. 2015. Trail: Learning the Java Language Lesson: Numbers and Strings→ – Aulas preparadas e disponibilizadas em 2014-1 pelo professor Lucas Antiqueira (TSI32B 2014-2).
  33. 33. TSI33A – Banco de Dados 1TSI33A – Banco de Dados 1 Ordenação Interna – Parte IOrdenação Interna – Parte I Prof. Me. Sidgley Camargo de Andrade Semana 02
  34. 34. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3434//6464 1. Ordenação de Dados1. Ordenação de Dados ● A ordenaçãoordenação de dados em um sistema computacional pode ser obtida pela inserção ordenadainserção ordenada dos dados (A…Z, a…z, 0…9, etc.) ou aplicaçãoaplicação de algoritmosde algoritmos que ordenam conjuntos de dados existentes. ● A ordem de inserçãoordem de inserção dos dados não é, ou não pode sernão pode ser, uma preocupação do usuário. Por isso, elementos desordenadosdesordenados são comuns em sistemas computacionais (e.g.e.g. os clientes são inseridos em uma base de dados de forma aleatório e não ordenada por nome). ● A partir das situações e dos problemas do mundo real, vários algoritmos de ordenaçãoalgoritmos de ordenação foram desenvolvidos, consistindo basicamente em realizar comparações sucessivas e trocar os elementos de posição.
  35. 35. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3535//6464 Por que Ordenar?Por que Ordenar? ● Alguns algoritmos exploram a ordenação dos dados para obter maior eficiência (desempenho) em sua execução: – Algoritmos de buscaAlgoritmos de busca – Algoritmos para identificar e excluir dados duplicadosAlgoritmos para identificar e excluir dados duplicados – Algoritmos de agrupamento e classificação de dadosAlgoritmos de agrupamento e classificação de dados Como buscar a palavra “manager” de forma eficiente no dicionário?Como buscar a palavra “manager” de forma eficiente no dicionário?Como buscar a palavra “manager” de forma eficiente no dicionário?Como buscar a palavra “manager” de forma eficiente no dicionário? Como identificar de forma rápida nomes repetidos em uma lista não ordenada?Como identificar de forma rápida nomes repetidos em uma lista não ordenada?Como identificar de forma rápida nomes repetidos em uma lista não ordenada?Como identificar de forma rápida nomes repetidos em uma lista não ordenada? Como agrupar os alunos em faixas etárias?Como agrupar os alunos em faixas etárias?Como agrupar os alunos em faixas etárias?Como agrupar os alunos em faixas etárias?
  36. 36. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3636//6464 O que éO que é Ordenação InternaOrdenação Interna?? ● A ordenação internaordenação interna envolve dados que estão contidos em memóriaestão contidos em memória internainterna do computador (memória principal), sendo a origem destes dados a própria memória interna ou memória externa (arquivos, fitas, etc.). ● Quando o conjunto de dadosconjunto de dados a ser ordenado é maior do que a memóriamaior do que a memória internainterna, então métodos de ordenação externaordenação externa devem ser aplicados (conteúdo da Semana 05Semana 05). ● Métodos de ordenação internaordenação interna insertionSort()insertionSort() selectionSort()selectionSort() bubbleSort()bubbleSort() mergeSort()mergeSort() heapSort()heapSort() shellSort()shellSort() radixSort()radixSort() quickSort()quickSort() etc…
  37. 37. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3737//6464 ConsideraçõesConsiderações ● Por questões didáticas, os materiais sobre ordenação normalmente trabalham com a ordenação de números,ordenação de números, contudo, os algoritmos deste material são ampliados para a ordenação de outros tipos primitivostipos primitivos e Strings.Strings. – InteirosInteiros: {3, 0, 5, 2, 1, 4} – ReaisReais: {0.3, 0.0, 0.5, 0.2, 0.1, 0.4} – StringsStrings: {"Sidgley", "Alexandre", "Fabio", "Wesley", "Eduardo"} Atenção!Atenção! Também é possível ordenar objetos a partir de seus atributos.Também é possível ordenar objetos a partir de seus atributos. Atenção!Atenção! Também é possível ordenar objetos a partir de seus atributos.Também é possível ordenar objetos a partir de seus atributos.
  38. 38. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3838//6464 2. Classe2. Classe MySortingClassMySortingClass ● Classe principal onde os métodos de ordenação e métodos auxiliares (swap()swap() , print()print() e isGreater()isGreater()) serão implementados. class MySortingClass { // array de objetos (tipos primitivos ou Strings) private Object[] array = null; // contrutor de classe para alimentar o array public MySortingClass(Object[] array) { this.array = array; } // implementação dos métodos de ordenação e auxiliares } class MySortingClass { // array de objetos (tipos primitivos ou Strings) private Object[] array = null; // contrutor de classe para alimentar o array public MySortingClass(Object[] array) { this.array = array; } // implementação dos métodos de ordenação e auxiliares } Métodos de usuário (implementados pelo professor)
  39. 39. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 3939//6464 O MétodoO Método swap()swap() ● Como dito anteriormente, os algoritmos de ordenação se resumem em realizar uma série de comparaçõescomparações e trocastrocas. Portanto, um método de swap()swap() é especificado: public void swap (int i, int j) { Object aux; aux = array[i]; array[i] = array[j]; array[j] = aux; } public void swap (int i, int j) { Object aux; aux = array[i]; array[i] = array[j]; array[j] = aux; } Função para trocar a posição dos valores dos índices. ObjectObject é a superclasse. Podemos substituir pela calsse String ou pelos tipos primitivos.
  40. 40. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4040//6464 O MétodoO Método isGreater()isGreater() ● Esse método identifica se o parâmetro value1value1 é maior do que o parâmetro value2value2. IsGreater()IsGreater() é necessário devido ao uso do mesmo algoritmo de ordenaçãoalgoritmo de ordenação para os tipos de dados especificados. public boolean isGreater(Object value1, Object value2) { boolean flag = false; if (value1 instanceof String) flag = value1.toString(). compareToIgnoreCase(value2.toString()) > 0 ? true : false; else if (value1 instanceof Integer) flag = Integer.valueOf(value1.toString()) > Integer.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Float) flag = Float.valueOf(value1.toString()) > Float.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Double) flag = Double.valueOf(value1.toString()) > Double.valueOf(value2.toString()) ? true : false; return flag; } public boolean isGreater(Object value1, Object value2) { boolean flag = false; if (value1 instanceof String) flag = value1.toString(). compareToIgnoreCase(value2.toString()) > 0 ? true : false; else if (value1 instanceof Integer) flag = Integer.valueOf(value1.toString()) > Integer.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Float) flag = Float.valueOf(value1.toString()) > Float.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Double) flag = Double.valueOf(value1.toString()) > Double.valueOf(value2.toString()) ? true : false; return flag; } InstanceofInstanceof verifica a classe do objeto
  41. 41. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4141//6464 O MétodoO Método print()print() ● Outro método importante é a exibição dos elementos a serem ordenados ou dos elementos ordenados. Para isso, o método print()print() foi implementado: public void print() { int i; for (i = 0; i < array.length; i++) System.out.print(array[i] + " "); System.out.println(); } public void print() { int i; for (i = 0; i < array.length; i++) System.out.print(array[i] + " "); System.out.println(); } Atenção!Atenção! arrayarray é um atributo privado da classe que detêm os métodos de ordenação,é um atributo privado da classe que detêm os métodos de ordenação, swap()swap(),, print()print() ee isGreater()isGreater(). Assim, se exibido os elementos antes da. Assim, se exibido os elementos antes da chamada do método de ordenação, então os elementos estarão desordenados.chamada do método de ordenação, então os elementos estarão desordenados. Atenção!Atenção! arrayarray é um atributo privado da classe que detêm os métodos de ordenação,é um atributo privado da classe que detêm os métodos de ordenação, swap()swap(),, print()print() ee isGreater()isGreater(). Assim, se exibido os elementos antes da. Assim, se exibido os elementos antes da chamada do método de ordenação, então os elementos estarão desordenados.chamada do método de ordenação, então os elementos estarão desordenados. http://www.ime.usp.br/~pf/algoritmos/aulas/ordena.html#insertion
  42. 42. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4242//6464 3.3. MétodoMétodo Insertion SortInsertion Sort Percorrer a sequência de elementossequência de elementos (N-1)(N-1) vezes, de 1 a N, deslocando o elemento correspondente a iteração ii de modo que os elementos à esquerdaelementos à esquerda fiquem ordenados (elementos menoreselementos menores para o iníciopara o início). – A cada iteração o método compara o elemento com os seus predecessores (array[i] com array[i-1], array[i-2]… array[0]) e o insere na posição adequada. Atenção!Atenção! Uma sequência comUma sequência com NN elementos terá, após a 1ª iteração, um elementoelementos terá, após a 1ª iteração, um elemento ordenado eordenado e N-1N-1 elementos para ordenar. Na 2ª iteração dois elementoselementos para ordenar. Na 2ª iteração dois elementos ordenados eordenados e N-2N-2 para ordenar. Assim, sucessivamente, até a iteraçãopara ordenar. Assim, sucessivamente, até a iteração N-1N-1, cujo, cujo número de elementos para ordenar énúmero de elementos para ordenar é N-(N-1)N-(N-1) Atenção!Atenção! Uma sequência comUma sequência com NN elementos terá, após a 1ª iteração, um elementoelementos terá, após a 1ª iteração, um elemento ordenado eordenado e N-1N-1 elementos para ordenar. Na 2ª iteração dois elementoselementos para ordenar. Na 2ª iteração dois elementos ordenados eordenados e N-2N-2 para ordenar. Assim, sucessivamente, até a iteraçãopara ordenar. Assim, sucessivamente, até a iteração N-1N-1, cujo, cujo número de elementos para ordenar énúmero de elementos para ordenar é N-(N-1)N-(N-1)
  43. 43. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4343//6464 ExemplificaçãoExemplificação Insertion SortInsertion Sort // 1ª iteração 0 até 0 i=1 3 0 5 2 1 4 key=0 <[0] swap() true _ 3 5 2 1 4 0 3 5 2 1 4 // 2ª iteração 1 até 0 i=2 0 3 5 2 1 4 key=5 <[1], <[0] swap() false 0 3 5 2 1 4 // 3ª iteração 2 até 0 i=3 0 3 5 2 1 4 key=2 <[2], <[1], <[0] swap() true 0 3 _ 5 1 4 0 _ 3 5 1 4 0 2 3 5 1 4 // 4ª iteração 3 até 0 i=4 0 2 3 5 1 4 key=2 <[3], <[2], <[1], <[0] swap() true 0 2 3 _ 5 4 0 2 _ 3 5 4 0 _ 2 3 5 4 0 1 2 3 5 4 // 5ª iteração 4 até 0 i=5 0 1 2 3 5 4 key=2 <[4], <[3], <[2], <[1], <[0] swap() true 0 1 2 3 _ 5 0 1 2 3 4 5 // 1ª iteração 0 até 0 i=1 3 0 5 2 1 4 key=0 <[0] swap() true _ 3 5 2 1 4 0 3 5 2 1 4 // 2ª iteração 1 até 0 i=2 0 3 5 2 1 4 key=5 <[1], <[0] swap() false 0 3 5 2 1 4 // 3ª iteração 2 até 0 i=3 0 3 5 2 1 4 key=2 <[2], <[1], <[0] swap() true 0 3 _ 5 1 4 0 _ 3 5 1 4 0 2 3 5 1 4 // 4ª iteração 3 até 0 i=4 0 2 3 5 1 4 key=2 <[3], <[2], <[1], <[0] swap() true 0 2 3 _ 5 4 0 2 _ 3 5 4 0 _ 2 3 5 4 0 1 2 3 5 4 // 5ª iteração 4 até 0 i=5 0 1 2 3 5 4 key=2 <[4], <[3], <[2], <[1], <[0] swap() true 0 1 2 3 _ 5 0 1 2 3 4 5
  44. 44. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4444//6464 MétodoMétodo insertionSort()insertionSort() em Javaem Java 1. public void insertionSort() { 2. int i, j; 3. Object key; 4. 5. for (i = 1; i < array.length; i++) { 6. key = array[i]; 7. j = i - 1; 8. while ((j >= 0) && (!isGreater(key, array[j]))) { 9. array[j+1] = array[j]; 10. j--; 11. } 12. array[j+1] = key; 13. } 14. } 1. public void insertionSort() { 2. int i, j; 3. Object key; 4. 5. for (i = 1; i < array.length; i++) { 6. key = array[i]; 7. j = i - 1; 8. while ((j >= 0) && (!isGreater(key, array[j]))) { 9. array[j+1] = array[j]; 10. j--; 11. } 12. array[j+1] = key; 13. } 14. } Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
  45. 45. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4545//6464 4.4. MétodoMétodo Bubble SortBubble Sort Percorrer a sequência de elementossequência de elementos (N-1)(N-1) vezes, de 0 a (N-1), comparando e trocando o elemento correspondente a iteração ii com os elementos à direitaelementos à direita (elementos menores para o inícioelementos menores para o início). – A cada iteração o método compara o elemento com seus sucessores (array[i] com array[i+1]) e o insere na posição adequada. Atenção!Atenção! Uma sequência comUma sequência com NN elementos terá, após a 1ª iteração, um elementoelementos terá, após a 1ª iteração, um elemento ordenado eordenado e N-1N-1 elementos para ordenar. Na 2ª iteração dois elementoselementos para ordenar. Na 2ª iteração dois elementos ordenados eordenados e N-2N-2 para ordenar. Assim, sucessivamente, até a iteraçãopara ordenar. Assim, sucessivamente, até a iteração N-1N-1, cujo, cujo número de elementos para ordenar énúmero de elementos para ordenar é N-(N-1)N-(N-1) Atenção!Atenção! Uma sequência comUma sequência com NN elementos terá, após a 1ª iteração, um elementoelementos terá, após a 1ª iteração, um elemento ordenado eordenado e N-1N-1 elementos para ordenar. Na 2ª iteração dois elementoselementos para ordenar. Na 2ª iteração dois elementos ordenados eordenados e N-2N-2 para ordenar. Assim, sucessivamente, até a iteraçãopara ordenar. Assim, sucessivamente, até a iteração N-1N-1, cujo, cujo número de elementos para ordenar énúmero de elementos para ordenar é N-(N-1)N-(N-1) http://www.ime.usp.br/~pf/algoritmos/aulas/ordena.html#insertion
  46. 46. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4646//6464 ExemplificaçãoExemplificação Bubble SortBubble Sort // 1ª iteração 0 até N-1 i=5 3 0 5 2 1 4 array[0] – array[1] swap() true 0 3 5 2 1 4 array[1] – array[2] swap() false 0 3 5 2 1 4 array[2] – array[3] swap() true 0 3 2 5 1 4 array[3] – array[4] swap() true 0 3 2 1 5 4 array[4] – array[5] swap() true 0 3 2 1 4 5 // término da 1ª iteração // 2ª iteração 0 até N-2 i=4 0 3 2 1 4 5 array[0] – array[1] swap() false 0 3 2 1 4 5 array[1] – array[2] swap() true 0 2 3 1 4 5 array[2] – array[3] swap() true 0 2 1 3 4 5 array[3] – array[4] swap() false 0 2 1 3 4 5 // término da 2ª iteração // 3ª iteração 0 até N-3 i=3 0 2 1 3 4 5 array[0] – array[1] swap() false 0 2 1 3 4 5 array[1] – array[2] swap() true 0 1 2 3 4 5 array[2] – array[3] swap() false 0 1 2 3 4 5 // término da 3ª iteração // 4ª iteração 0 até N-4 i=2 0 1 2 3 4 5 array[0] – array[1] swap() false 0 1 2 3 4 5 array[1] – array[2] swap() false 0 1 2 3 4 5 // término da 4ª iteração // 5ª iteração 0 até N-5 (interrompida pela variável swap – sem troca em i=2) i=1 0 1 2 3 4 5 array[0] – array[1] swap() false 0 1 2 3 4 5 // término da 5ª iteração // 1ª iteração 0 até N-1 i=5 3 0 5 2 1 4 array[0] – array[1] swap() true 0 3 5 2 1 4 array[1] – array[2] swap() false 0 3 5 2 1 4 array[2] – array[3] swap() true 0 3 2 5 1 4 array[3] – array[4] swap() true 0 3 2 1 5 4 array[4] – array[5] swap() true 0 3 2 1 4 5 // término da 1ª iteração // 2ª iteração 0 até N-2 i=4 0 3 2 1 4 5 array[0] – array[1] swap() false 0 3 2 1 4 5 array[1] – array[2] swap() true 0 2 3 1 4 5 array[2] – array[3] swap() true 0 2 1 3 4 5 array[3] – array[4] swap() false 0 2 1 3 4 5 // término da 2ª iteração // 3ª iteração 0 até N-3 i=3 0 2 1 3 4 5 array[0] – array[1] swap() false 0 2 1 3 4 5 array[1] – array[2] swap() true 0 1 2 3 4 5 array[2] – array[3] swap() false 0 1 2 3 4 5 // término da 3ª iteração // 4ª iteração 0 até N-4 i=2 0 1 2 3 4 5 array[0] – array[1] swap() false 0 1 2 3 4 5 array[1] – array[2] swap() false 0 1 2 3 4 5 // término da 4ª iteração // 5ª iteração 0 até N-5 (interrompida pela variável swap – sem troca em i=2) i=1 0 1 2 3 4 5 array[0] – array[1] swap() false 0 1 2 3 4 5 // término da 5ª iteração
  47. 47. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4747//6464 MétodoMétodo bubbleSort()bubbleSort() em Javaem Java 1. public void bubbleSort() { 2. int i, j; 3. boolean swap = true; 4. 5. for (i = array.length - 1; (i > 0 && swap); i--) { 6. swap = false; 7. for (j = 0; j < i; j++) { 8. if (isGreater(array[j], array[j+1])) { 9. swap(j,j+1); 10. swap = true; 11. } 12. } 13. } 14. } 1. public void bubbleSort() { 2. int i, j; 3. boolean swap = true; 4. 5. for (i = array.length - 1; (i > 0 && swap); i--) { 6. swap = false; 7. for (j = 0; j < i; j++) { 8. if (isGreater(array[j], array[j+1])) { 9. swap(j,j+1); 10. swap = true; 11. } 12. } 13. } 14. } A variável swapswap interromper o processo quando houver uma passagem inteira sem trocas Função swap()swap() apresentada para trocar a posição dos valores dos índices. Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
  48. 48. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4848//6464 5. Método5. Método Selection SortSelection Sort Percorrer a sequência de elementossequência de elementos (N-1)(N-1) vezes, de 0 a N-1, encontrando a cada iteração ii, sendo ii entre 0…(N-1)0…(N-1), o menor elemento. Em seguida, trocar o menor elemento pelo elemento do índice ii (elementos menores para o inícioelementos menores para o início). – A cada iteração, encontrar o menor valor e trocá-lo pela posição do índice (minmin com array[i]array[i]). Atenção!Atenção! Uma sequência comUma sequência com NN elementos terá, após a 1ª iteração, um elementoelementos terá, após a 1ª iteração, um elemento ordenado eordenado e N-1N-1 elementos para ordenar. Na 2ª iteração dois elementoselementos para ordenar. Na 2ª iteração dois elementos ordenados eordenados e N-2N-2 para ordenar. Assim, sucessivamente, até a iteraçãopara ordenar. Assim, sucessivamente, até a iteração N-1N-1, cujo, cujo número de elementos para ordenar énúmero de elementos para ordenar é N-(N-1)N-(N-1) Atenção!Atenção! Uma sequência comUma sequência com NN elementos terá, após a 1ª iteração, um elementoelementos terá, após a 1ª iteração, um elemento ordenado eordenado e N-1N-1 elementos para ordenar. Na 2ª iteração dois elementoselementos para ordenar. Na 2ª iteração dois elementos ordenados eordenados e N-2N-2 para ordenar. Assim, sucessivamente, até a iteraçãopara ordenar. Assim, sucessivamente, até a iteração N-1N-1, cujo, cujo número de elementos para ordenar énúmero de elementos para ordenar é N-(N-1)N-(N-1)
  49. 49. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 4949//6464 ExemplificaçãoExemplificação Seletion SortSeletion Sort // 1ª iteração 3 0 5 2 1 4 min=[0] troca com [1] swap() true 0 3 5 2 1 4 // 2ª iteração 0 3 5 2 1 4 min=[1] troca com [4] swap() true 0 1 5 2 3 4 // 3ª iteração 0 1 5 2 3 4 min=[2] troca com [3] swap() true 0 1 2 5 3 4 // 4ª iteração 0 1 2 5 3 4 min=[3] troca com [4] swap() true 0 1 2 3 5 4 // 5ª iteração 0 1 2 3 5 4 min=[4] troca com [5] swap() true 0 1 2 3 5 4 // 1ª iteração 3 0 5 2 1 4 min=[0] troca com [1] swap() true 0 3 5 2 1 4 // 2ª iteração 0 3 5 2 1 4 min=[1] troca com [4] swap() true 0 1 5 2 3 4 // 3ª iteração 0 1 5 2 3 4 min=[2] troca com [3] swap() true 0 1 2 5 3 4 // 4ª iteração 0 1 2 5 3 4 min=[3] troca com [4] swap() true 0 1 2 3 5 4 // 5ª iteração 0 1 2 3 5 4 min=[4] troca com [5] swap() true 0 1 2 3 5 4
  50. 50. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5050//6464 MétodoMétodo selectionSort()selectionSort() em Javaem Java 1. public void selectionSort() { 2. int i, j, min; 3. 4. for (i = 0; i < array.length - 1; i++) { 5. min = i; 6. for (j = i + 1; j < array.length; j++) 7. if (!isGreater(array[j], array[min])) 8. min = j; 9. swap(min,i); 10. } 11. } 1. public void selectionSort() { 2. int i, j, min; 3. 4. for (i = 0; i < array.length - 1; i++) { 5. min = i; 6. for (j = i + 1; j < array.length; j++) 7. if (!isGreater(array[j], array[min])) 8. min = j; 9. swap(min,i); 10. } 11. } Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
  51. 51. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5151//6464 6. Simuladores6. Simuladores ● http://www.cs.usfca.edu/~galles/visualization/ ● http://www.sorting-algorithms.com/ ● http://nicholasandre.com.br/sorting/ Atenção!Atenção! Analise a execução dos métodos apresentados para as diferentesAnalise a execução dos métodos apresentados para as diferentes entradas (entradas (Random,, Nearly Sorted,, Reversed ee Few Unique)) Atenção!Atenção! Analise a execução dos métodos apresentados para as diferentesAnalise a execução dos métodos apresentados para as diferentes entradas (entradas (Random,, Nearly Sorted,, Reversed ee Few Unique))
  52. 52. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5252//6464 CréditosCréditos ● MaterialMaterial – Preiss, B. R. Estrutura de Dados e Algoritmos: Padrões de Projetos Orientados a Objeto com Java. Rio de Janeiro: Elsevier, 2000. ISBN 978- 85-7110-0693-7. Capítulo 15: Algoritmos de Ordenação e Ordenadores – Aulas preparadas e disponibilizadas em 2014-1 pelo professor Lucas Antiqueira (TSI32B 2014-2).
  53. 53. TSI33A – Banco de Dados 1TSI33A – Banco de Dados 1 Ordenação Interna – Parte IIOrdenação Interna – Parte II Prof. Me. Sidgley Camargo de Andrade Semana 03
  54. 54. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5454//6464 1.1. MétodoMétodo Merge SortMerge Sort A sequência de elementossequência de elementos é dividida recursivamente NN vezes até cada subsequênciasubsequência conter apenas um elemento. As subsenquênciassubsenquências são intercaladas formando uma sequência ordenadasequência ordenada de elementos (dividir para conquistardividir para conquistar). dividirdividir
  55. 55. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5555//6464 ExemplificaçãoExemplificação Merge SortMerge Sort 3 0 5 2 1 4 3 0 5 2 1 4 3 0 5 2 1 4 3 0 5 2 1 4 0 3 5 2 1 4 0 3 5 2 1 4 0 3 5 1 2 4 0 1 2 3 4 5 3 0 5 2 1 4 3 0 5 2 1 4 3 0 5 2 1 4 3 0 5 2 1 4 0 3 5 2 1 4 0 3 5 2 1 4 0 3 5 1 2 4 0 1 2 3 4 5 DividirDividir mergeSortRecursive() IntercalarIntercalar doMerge()
  56. 56. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5656//6464 O MétodoO Método isGreaterEquals()isGreaterEquals() ● Esse método identifica se o parâmetro value1value1 é maior ou igual do que o parâmetro value2value2. public boolean isGreaterEquals(Object value1, Object value2) { boolean flag = false; if (value1 instanceof String) flag = value1.toString(). compareToIgnoreCase(value2.toString()) >= 0 ? true : false; else if (value1 instanceof Integer) flag = Integer.valueOf(value1.toString()) >= Integer.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Float) flag = Float.valueOf(value1.toString()) >= Float.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Double) flag = Double.valueOf(value1.toString()) >= Double.valueOf(value2.toString()) ? true : false; return flag; } public boolean isGreaterEquals(Object value1, Object value2) { boolean flag = false; if (value1 instanceof String) flag = value1.toString(). compareToIgnoreCase(value2.toString()) >= 0 ? true : false; else if (value1 instanceof Integer) flag = Integer.valueOf(value1.toString()) >= Integer.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Float) flag = Float.valueOf(value1.toString()) >= Float.valueOf(value2.toString()) ? true : false; else if (value1 instanceof Double) flag = Double.valueOf(value1.toString()) >= Double.valueOf(value2.toString()) ? true : false; return flag; }
  57. 57. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5757//6464 MétodoMétodo mergeSort()mergeSort() em Java -em Java - DivisãoDivisão 1. public void mergeSort() { 2. mergeSortRecursive(0, array.length); 3. } 1. public void mergeSort() { 2. mergeSortRecursive(0, array.length); 3. } 1. private void mergeSortRecursive(int p, int r) { 2. int q; 3. if (p < r - 1) { 4. q = (p + r) / 2; 5. mergeSortRecursive(p, q); 6. mergeSortRecursive(q, r); 7. doMerge(p, q, r); 8. } 9. } 1. private void mergeSortRecursive(int p, int r) { 2. int q; 3. if (p < r - 1) { 4. q = (p + r) / 2; 5. mergeSortRecursive(p, q); 6. mergeSortRecursive(q, r); 7. doMerge(p, q, r); 8. } 9. } Método público a ser invocado. Método para realizar as divisões recursivas e invocar a intercalação das subcadeias de elementos.
  58. 58. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5858//6464 MétodoMétodo mergeSort()mergeSort() em Java -em Java - IntercalaçãoIntercalação 1. private void doMerge(int p, int q, int r) { 2. int i = p, j = q, k = 0; 3. Object[] w = new Object[r-p]; 4. 5. while (i < q && j < r) { 6. if (!isGreaterEquals(array[i],array[j])) 7. w[k++] = array[i++]; 8. else 9. w[k++] = array[j++]; 10. } 11. 12. while (i < q) 13. w[k++] = array[i++]; 14. 15. while (j < r) 16. w[k++] = array[j++]; 17. 18. for (i = p; i < r; ++i) 19. array[i] = w[i-p]; 20. } 1. private void doMerge(int p, int q, int r) { 2. int i = p, j = q, k = 0; 3. Object[] w = new Object[r-p]; 4. 5. while (i < q && j < r) { 6. if (!isGreaterEquals(array[i],array[j])) 7. w[k++] = array[i++]; 8. else 9. w[k++] = array[j++]; 10. } 11. 12. while (i < q) 13. w[k++] = array[i++]; 14. 15. while (j < r) 16. w[k++] = array[j++]; 17. 18. for (i = p; i < r; ++i) 19. array[i] = w[i-p]; 20. } Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html Atenção!Atenção! Simule o método emSimule o método em http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.htmlhttp://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
  59. 59. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 5959//6464 1.1. MétodoMétodo Quick SortQuick Sort A sequência de elementossequência de elementos é dividida recursivamente NN vezes através do particionamento dos elementos em duas subsequências desordenadas de modo que os elementos menores que um determinado pivo fiquem para a esquerda e os elementos maiores à direita. Depois da partição o pivo é inserido entre as duas sequências (dividir para conquistardividir para conquistar).
  60. 60. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6060//6464 MétodoMétodo quickSort()quickSort() em Javaem Java 1. public void quickSort() { 2. quickSortRecursive(0, array.length - 1); 3. } 1. public void quickSort() { 2. quickSortRecursive(0, array.length - 1); 3. } Método público a ser invocado.
  61. 61. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6161//6464 MétodoMétodo quickSort()quickSort() em Javaem Java 1. private void quickSortRecursive(int inf, int sup) { 2. int meio, i, j; 3. Object aux, pivo; 4. if (inf < sup) { 5. meio = (inf + sup) / 2; 6. pivo = array[meio]; 7. array[meio] = array[sup]; 8. array[sup] = pivo; 9. i = inf - 1; 10. j = sup; 11. do { 12. do { 13. i++; 14. } while (isGreater(pivo, array[i])); 15. do { 16. j--; 17. } while ((isGreater(array[j], pivo)) && (j > inf)); 18. if (i < j) { 19. aux = array[i]; 20. array[i] = array[j]; 21. array[j] = aux; 22. } 23. } while (i < j); 24. array[sup] = array[i]; 25. array[i] = pivo; 26. quickSortRecursive(inf, i - 1); 27. quickSortRecursive(i + 1, sup); 28. } 39. } 1. private void quickSortRecursive(int inf, int sup) { 2. int meio, i, j; 3. Object aux, pivo; 4. if (inf < sup) { 5. meio = (inf + sup) / 2; 6. pivo = array[meio]; 7. array[meio] = array[sup]; 8. array[sup] = pivo; 9. i = inf - 1; 10. j = sup; 11. do { 12. do { 13. i++; 14. } while (isGreater(pivo, array[i])); 15. do { 16. j--; 17. } while ((isGreater(array[j], pivo)) && (j > inf)); 18. if (i < j) { 19. aux = array[i]; 20. array[i] = array[j]; 21. array[j] = aux; 22. } 23. } while (i < j); 24. array[sup] = array[i]; 25. array[i] = pivo; 26. quickSortRecursive(inf, i - 1); 27. quickSortRecursive(i + 1, sup); 28. } 39. }
  62. 62. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6262//6464 ConsideraçõesConsiderações quickSort()quickSort() ● A seleção do pivotpivot afeta diretamente o tempo de processamento do algoritmo, portanto, cuidado com a escolha do pivotpivot.
  63. 63. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6363//6464 6. Simuladores6. Simuladores ● http://www.cs.usfca.edu/~galles/visualization/ ● http://www.sorting-algorithms.com/ ● http://nicholasandre.com.br/sorting/ Atenção!Atenção! Analise a execução dos métodos apresentados para as diferentesAnalise a execução dos métodos apresentados para as diferentes entradas (entradas (Random,, Nearly Sorted,, Reversed ee Few Unique)) Atenção!Atenção! Analise a execução dos métodos apresentados para as diferentesAnalise a execução dos métodos apresentados para as diferentes entradas (entradas (Random,, Nearly Sorted,, Reversed ee Few Unique))
  64. 64. TSI32B - Estrutura, Pesquisa e OrdenaçãoTSI32B - Estrutura, Pesquisa e Ordenação 6464//6464 CréditosCréditos ● MaterialMaterial – Preiss, B. R. Estrutura de Dados e Algoritmos: Padrões de Projetos Orientados a Objeto com Java. Rio de Janeiro: Elsevier, 2000. ISBN 978- 85-7110-0693-7. Capítulo 15: Algoritmos de Ordenação e Ordenadores

×