USJT – 2013 – ALGESD – 2ASIN – ALGORITMO E ESTRUTURA DE DADOS Professor: Robson Calvetti
Aula: Laboratório 01
Assunto: Comparação de métodos de ordenação Relatório Dados do Aluno
R.A.: 201212079
Nome: Mariana Muniz de Lima 1. Introdução:
Este relatório refere-se ao desenvolvimento e práticas de programação do conceito de métodos de ordenação quick sort, manipulada através da linguagem Java, através de exercícios disponibilizados pelo professor.
2. Objetivo:
Solucionar, a partir do exercício proposto, conforme arquivo PDF postado pe lo docente (vide arquvio .pdf – USJT-2013-SI-ALGESD-Lista de Exercícios do 1° Semestre –
Página 11 – Exercícios 74 ao 78)
3. Procedimentos Experimentais: 3.1. Materiais: IDE Jgrasp
3.2. Equipamentos: Computador Desktop.
3.3. Métodos: Utilização do conceito ordenação quick sort.
4. Resultados e Discussões:
Resultados sobre o assunto em questão vide anexo.
5. Conclusão:
A partir dos algoritmos resolvidos foi possível constatar que o método de ordenação quick sort é mais eficaz se comparado com o bubble sort ou selection sort.
public class Exerc_74 {
static char vetor[] = new char [5];
public static void main (String args []) { DigitaVetor(); OrdenacaoQuickSortChar(vetor, 0, vetor.length-1); ImprimeVetor(vetor); }
public static void DigitaVetor() {
String palavra = "";
palavra = JOptionPane.showInputDialog(null,"Digite uma palavra de 5 caracteres:");
vetor = palavra.substring(0, 5).toCharArray(); }
public static void OrdenacaoQuickSortChar(char vet[], int baixo, int alto)
{ int pv, b,a; char pivot; b= baixo; a =alto; pivot= vet[baixo]; while(baixo < alto) {
while((vet[alto] >= pivot) && (baixo < alto)) alto--; if(baixo != alto) { vet[baixo]= vet[alto]; baixo++; }
while((vet[baixo] <= pivot) && (baixo < alto)) baixo++; if(baixo != alto) { vet[alto]=vet[baixo]; alto--; } } vet[baixo] = pivot;
pv = baixo; baixo = b; alto = a; if(baixo < pv ) { OrdenacaoQuickSortChar(vet, baixo, pv-1); } if(alto > pv ) { OrdenacaoQuickSortChar(vet, pv+1,alto); } }
public static void ImprimeVetor(char vet[]) {
for ( int i = 0 ; i < vet.length ; i ++) { System.out.println("" + vet[i]); } } }
static int vetor[]; static int tam;
public static void main (String args[]) { ConfiguraVetor(); DigitaVetor(); OrdenacaoQuickSortInt(vetor, 0, vetor.length-1); ImprimeVetor(vetor); System.exit(0); }
public static void ConfiguraVetor() {
tam =
Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o tamanho do vetor:"));
vetor = new int [tam]; }
public static void DigitaVetor() {
for(int i = 0; i<vetor.length; i++) { vetor[i] = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o "+(i+1)+"o valor:")); } }
public static void OrdenacaoQuickSortInt(int vet[], int baixo, int alto)
{ int pv, b,a; int pivot; b= baixo; a =alto; pivot= vet[baixo]; while(baixo < alto) {
while((vet[alto] >= pivot) && (baixo < alto)) alto--;
if(baixo != alto) {
baixo++; }
while((vet[baixo] <= pivot) && (baixo < alto)) baixo++; if(baixo != alto) { vet[alto]=vet[baixo]; alto--; } } vet[baixo] = pivot; pv = baixo; baixo = b; alto = a; if(baixo < pv ) { OrdenacaoQuickSortInt(vet, baixo, pv-1); } if(alto > pv ) { OrdenacaoQuickSortInt(vet, pv+1,alto); } }
public static void ImprimeVetor(int vet[]) {
for ( int i = 0 ; i < vet.length ; i ++) { System.out.println("" + vet[i]); } } }
static double vetor[] = new double [20];
public static void main (String args[]) { DigitaVetor(); OrdenacaoQuickSortInt(vetor, 0, vetor.length-1); ImprimeVetor(vetor); System.exit(0); }
public static void DigitaVetor() {
for(int i = 0; i<vetor.length; i++) { vetor[i] = Double.parseDouble(JOptionPane.showInputDialog(null,"Informe o "+(i+1)+"o valor:")); } }
public static void OrdenacaoQuickSortInt(double vet[], int baixo, int alto)
{ int pv, b,a; double pivot; b= baixo; a =alto; pivot= vet[baixo]; while(baixo < alto) {
while((vet[alto] >= pivot) && (baixo < alto)) alto--; if(baixo != alto) { vet[baixo]= vet[alto]; baixo++; }
while((vet[baixo] <= pivot) && (baixo < alto)) baixo++; if(baixo != alto) { vet[alto]=vet[baixo]; alto--; } }
vet[baixo] = pivot; pv = baixo; baixo = b; alto = a; if(baixo < pv ) { OrdenacaoQuickSortInt(vet, baixo, pv-1); } if(alto > pv ) { OrdenacaoQuickSortInt(vet, pv+1,alto); } }
public static void ImprimeVetor(double vet[]) {
for ( int i = 0 ; i < vet.length ; i ++) { System.out.println("" + vet[i]); } } }
static char vetor[] = new char [5]; static int comparacao = 0;
static int atribuicao = 0;
public static void main (String args []) { DigitaVetor(); OrdenacaoQuickSortChar(vetor, 0, vetor.length-1); ImprimeVetor(vetor); }
public static void DigitaVetor() {
String palavra = "";
palavra = JOptionPane.showInputDialog(null,"Digite uma palavra de 5 caracteres:");
vetor = palavra.substring(0, 5).toCharArray(); }
public static void OrdenacaoQuickSortChar(char vet[], int baixo, int alto)
{ int pv, b,a; char pivot; b= baixo; a = alto; pivot = vet[baixo]; atribuicao += 3; while(baixo < alto) { comparacao +=1;
while((vet[alto] >= pivot) && (baixo < alto)) { alto--; comparacao += 1; } if(baixo != alto) { vet[baixo]= vet[alto]; baixo++; comparacao+= 1;
atribuicao += 1; }
while((vet[baixo] <= pivot) && (baixo < alto)) { baixo++; comparacao += 1; } if(baixo != alto) { vet[alto]=vet[baixo]; alto--; comparacao += 1; atribuicao += 1; } } vet[baixo] = pivot; pv = baixo; baixo = b; alto = a; atribuicao += 4; if(baixo < pv ) { OrdenacaoQuickSortChar(vet, baixo, pv-1); comparacao += 1; } if(alto > pv ) { OrdenacaoQuickSortChar(vet, pv+1,alto); comparacao += 1; } }
public static void ImprimeVetor(char vet[]) {
for ( int i = 0 ; i < vet.length ; i ++) {
System.out.println("" + vet[i]); }
JOptionPane.showMessageDialog(null,"Quantidade de atribuicoes: "+ atribuicao+"\nQuantidade de comparacoes: "+comparacao); } }
static int indice; static char busca;
public static void main (String args []) { DigitaVetor(); OrdenacaoQuickSortChar(vetor, 0, vetor.length-1); Busca(); indice = BuscaBinariaRecursiva(vetor,0,vetor.length -1, busca);
if(( indice >= 0 )&& (indice <= vetor.length)) {
JOptionPane.showMessageDialog(null,"Caracter encontrado na posicao "+(indice+1));
} else {
JOptionPane.showMessageDialog(null,"Caracter nao encontrado!!"," Nao encontrado!",1);
} }
public static void DigitaVetor() {
String palavra = "";
palavra = JOptionPane.showInputDialog(null,"Digite uma palavra de 10 caracteres:");
vetor = palavra.substring(0, 10).toCharArray(); }
public static void OrdenacaoQuickSortChar(char vet[], int baixo, int alto)
{ int pv, b,a; char pivot; b= baixo; a =alto; pivot= vet[baixo]; while(baixo < alto) {
while((vet[alto] >= pivot) && (baixo < alto)) alto--;
if(baixo != alto) {
vet[baixo]= vet[alto]; baixo++;
}
while((vet[baixo] <= pivot) && (baixo < alto)) baixo++; if(baixo != alto) { vet[alto]=vet[baixo]; alto--; } } vet[baixo] = pivot; pv = baixo; baixo = b; alto = a; if(baixo < pv ) { OrdenacaoQuickSortChar(vet, baixo, pv-1); } if(alto > pv ) { OrdenacaoQuickSortChar(vet, pv+1,alto); } }
public static void Busca() {
String palavra = "";
palavra = JOptionPane.showInputDialog(null,"Informe o caracter a ser procurado:");
busca = palavra.charAt(0); }
public static int BuscaBinariaRecursiva(char vet[], int inicio, int fim, char procurado)
{ int meio; if(inicio <= fim) { meio=(inicio+fim)/2; if(procurado < vetor[meio])
} else { return meio; } } else return -1; } }