Java.lang.NumberFormatException Alguém me salva por favor

0 respostas
dambros

Bom estou finalizando um trabalho para faculdade, so que o danado insiste em dar o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""

Eu sei que o motivo é porque o a variável arrayCamposTamanho[0] não foi preenchida, mas eu queria que de alguma forma, mesmo se o campo estivesse vazio o programa não lotasse o console de erros. Sei la, se tivesse vazio aparecesse uma mensagem solicitando o valor ou avisando que o campo está vazio.

Tem como alguém me salvar? Preciso entregar esse trabalho ainda hoje.

Segue código:

Sei* que está meio bagunçado, mas o principal(onde ta dando o erro) encontra-se no método ActionPerformed(linha 126).
package Grafica.src;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;



class Grafica extends JFrame implements ActionListener {

	String s;	
	int valor, temp;
	JLabel label;
	JButton botao, botinha, sair;
	JComboBox comboArranjos;
	String[] vetorArranjos = { "Aleatórios", "Misturados", "Crescente",
			"Descrescente", "Iguais", "Crescente Misto", "Decrescente Misto" };

	int[] auxiliar ;
	JTextField[] arrayCamposTamanho = new JTextField[10];
	JCheckBox insercaoDireta;
	JCheckBox selecaoDireta;
	JCheckBox bolha;
	JCheckBox mergesort;
	JCheckBox quicksort;
	JCheckBox quicksortAleatorio;
	JCheckBox heapsort;
	JCheckBox shellsort;
	JFrame principal;
	JPanel panelAlgoritmos;
	JPanel panelTamanhos;
	JPanel panelLivre;
	JPanel panelArranjos;
	JLabel tipo, impressao, tamanho;
	JTextArea texto;
	
	Grafica() {
		setTitle("Execução de algoritmos de ordenação");
	}

	void montaTela() {

		arrayCamposTamanho[0] = new JTextField(null);
		insercaoDireta = new JCheckBox("Inserção Direta");
		selecaoDireta = new JCheckBox("Seleção Direta");
		bolha = new JCheckBox("Bolha");
		mergesort = new JCheckBox("Mergesort");
		quicksort = new JCheckBox("Quicksort");
		quicksortAleatorio = new JCheckBox("Quicksort Aleatório");
		heapsort = new JCheckBox("Heapsort");
		shellsort = new JCheckBox("Shellsort");
		principal = new Grafica();
		principal.setSize(600, 450);
		principal.setLayout(new GridLayout(2, 3, 10, 10));
		principal.setLocation(250,100);
		principal.setVisible(true);
		principal.setResizable(false);
		principal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		panelAlgoritmos = new JPanel();
		panelAlgoritmos.setLayout(new BoxLayout(panelAlgoritmos,BoxLayout.Y_AXIS));
		panelTamanhos = new JPanel();
		panelTamanhos.setLayout(new BoxLayout(panelTamanhos, BoxLayout.Y_AXIS));
		panelLivre = new JPanel();
		panelLivre.setLayout(new BoxLayout(panelLivre, BoxLayout.Y_AXIS));
		panelArranjos = new JPanel();
		panelArranjos.setLayout(new BoxLayout(panelArranjos, BoxLayout.Y_AXIS));
		botao = new JButton("Calcular");
		botinha = new JButton("About");
		sair = new JButton("Sair");
		comboArranjos = new JComboBox(vetorArranjos);
		
		
		
		botao.addActionListener(this);
		botinha.addActionListener(this);
		sair.addActionListener(this);
		principal.add(panelAlgoritmos);
		principal.add(panelTamanhos);
		principal.add(panelLivre);
		principal.add(panelArranjos);
		tipo = new JLabel("Tipo de geração dos números do vetor");
		panelArranjos.add(tipo);
		panelArranjos.add(comboArranjos);
		comboArranjos.setSize(1,1);
		comboArranjos.setAlignmentY(150);
		comboArranjos.setSize(1,1);
		panelLivre.add(botao);
		panelLivre.add(botinha);
		panelLivre.add(sair);
		sair.setVisible(true);
		botao.setVisible(true);
		botinha.setVisible(true);
		
		impressao = new JLabel ("Área de Impressão");
		tamanho = new JLabel ("Tamanho do vetor");
		
		//Colocando os elementos do array dentro do painel
		texto = new JTextArea(50,50);
		texto.setEditable(false);
		JScrollPane scrollPane = new JScrollPane(texto);
		scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 
		/*for(int j = 0; j < array.length; j ++){
			System.out.println(texto.append(array[j]));
		}*/
		
		panelAlgoritmos.add(insercaoDireta);
		panelAlgoritmos.add(selecaoDireta);
		panelAlgoritmos.add(bolha);
		panelAlgoritmos.add(mergesort);
		panelAlgoritmos.add(quicksort);
		panelAlgoritmos.add(quicksortAleatorio);
		panelAlgoritmos.add(heapsort);
		panelAlgoritmos.add(shellsort);
		panelTamanhos.add(tamanho);
		panelTamanhos.add(arrayCamposTamanho[0]);
		panelTamanhos.add(impressao);
		panelTamanhos.add(scrollPane);
		
	}

	
	
	
	public void actionPerformed(ActionEvent event) {
		if("Sair".equals(event.getActionCommand())){
			System.exit(0);
		}
		if("About".equals(event.getActionCommand())){
			JOptionPane.showMessageDialog(principal,"xxx\n"+
					"RGM:111111", "About", JOptionPane.INFORMATION_MESSAGE);
		}
		
		
		int [] temporario = new int[Integer.parseInt(arrayCamposTamanho[0].getText())];
		temp = Integer.parseInt(arrayCamposTamanho[0].getText());
		
		GeradorDeArranjos ger = new GeradorDeArranjos();
		//Pegando o tamanho do array e gerando um arranjo de numeros
		
		
		if(comboArranjos.getSelectedIndex() == 0){
			temporario = ger.arranjoDeElementosAleatorios(temp);
		}
		if(comboArranjos.getSelectedIndex() == 1){
			temporario = ger.arranjoDeElementosMisturados(temp);
		}
		if(comboArranjos.getSelectedIndex() == 2){
			temporario = ger.arranjoDeElementosCrescentes(temp);
		}
		if(comboArranjos.getSelectedIndex() == 3){
			temporario = ger.arranjoDeElementosDecrescentes(temp);
		}
		if(comboArranjos.getSelectedIndex() == 4){
			temporario = ger.arranjoDeElementosIguais(temp);
		}
		if(comboArranjos.getSelectedIndex() == 5){
			 s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
			int scan = Integer.parseInt(s);
			temporario = ger.arranjoDeElementosCrescentesMistos(temp,scan);
		
		}
				
				
		
		
	

		if(insercaoDireta.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{					
					//temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					
					//for(int j =0; j< temporario.length; j++){
					//	.System.out.println(auxiliar[j]);
					//}

					int[] aux = temporario; 
					long tinicial = new Date().getTime(); 
					int id, ie, numeroAInserir; 
					int fim = aux.length; 
					for(id=1; id < fim; id++) 
					{ 
						numeroAInserir = aux[id]; 
						ie=id; 
						while((ie >0) && (aux[ie-1] > numeroAInserir)){ 
							aux[ie] = aux[ie-1]; 
							ie--; 
						} 
						aux[ie]=numeroAInserir; 
					} 
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					valor =1 ;
					print(texec,valor);
					
				} 
			}
			
			
		} 
		if(selecaoDireta.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					} 
					int[] aux = ger.arranjoDeElementosAleatorios(temp); 
					long tinicial = new Date().getTime(); 
					int sd, se, indiceDoMinimo, tempo;
					int fim = aux.length;

					for (sd = 0; sd< fim - 1; sd++)
					{
						// Inicialmente o menor elemento já visto é o primeiro elemento

						indiceDoMinimo = sd;
						for(se=sd+1; se < fim; se++)
						{
							if(aux[se] < aux[indiceDoMinimo])
								indiceDoMinimo = se;
						}
						// Coloca o menor elemento no inicio do sub-vetor atual. Para isso, 
						// troca de lugar os elementos nos indices e e indiceDoMinimo.

						tempo = aux[sd];
						aux[sd] = aux[indiceDoMinimo];
						aux[indiceDoMinimo] =tempo;
					}
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					
					valor =2 ;
					print(texec,valor);
				} 
			} 
		}
		if(bolha.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					//temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					} 
					int[] aux = ger.arranjoDeElementosAleatorios(temp); 
					long tinicial = new Date().getTime();
					int bo, bp, tempbolha;
					int fim = aux.length;
					for(bo=fim -1; bo > 0 ; bo--)
					{
						// Varre o vetor desde o inicio procurando erros de ordenacao.
						// Como cada passagem o maior elemento sobe até sua
						// posicao correta, nao há necessidade de ir até o final.

						for(bp=1; bp <= bo; bp++)
							// Se a ordem está errada para o par j-1 e j
							if(aux[bp-1] > aux[bp])
							{
								// Troca os dois de lugar
								tempbolha = aux[bp-1];
								aux[bp-1] = aux[bp];
								aux[bp] = tempbolha;
							}
					}
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					//System.out.println("Tempo de Execução do algoritmo Bolha: "+texec+"  Tamanho do arranjo: "+temp);
					valor =3 ;
					print(texec,valor);
				
				}
			}
		}
		if(mergesort.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					//temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					int[] aux = ger.arranjoDeElementosAleatorios(temp);
					long tinicial = new Date().getTime();
					mergeSort(aux,0, aux.length-1);
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					//System.out.println("Tempo de Execução do algoritmo Mergesort: "+texec+"  Tamanho do arranjo: "+temp);
					valor =4 ;
					print(texec,valor);
				}
			}
		}
		if(quicksort.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					//temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					} 
					int[] aux = ger.arranjoDeElementosAleatorios(temp);
					long tinicial = new Date().getTime();
					quickSort(aux,0,aux.length-1);
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					//System.out.println("Tempo de Execução do algoritmo Quicksort: "+texec+"  Tamanho do arranjo: "+temp);
					valor =5 ;
					print(texec,valor);
				}
			}
		}
		if(quicksortAleatorio.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					//temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					int[] aux = ger.arranjoDeElementosAleatorios(temp);
					long tinicial = new Date().getTime();
					quickSortAleatorio(aux, 0,aux.length-1);
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					//System.out.println("Tempo de Execução do algoritmo Quicksort Aleatório: "+texec+"  Tamanho do arranjo: "+temp);
					valor =6 ;
					print(texec,valor);
				}
			}
		}
		if(heapsort.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					//int temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					} 
					int[] aux = ger.arranjoDeElementosAleatorios(temp);
					long tinicial = new Date().getTime();
					heapSort(aux);
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					//System.out.println("Tempo de Execução do algoritmo Heapsort: "+texec+"  Tamanho do arranjo: "+temp);
					valor =7 ;
					print(texec,valor);
				}
			}
		}
		if(shellsort.isSelected()){ 
			for(int i = 0; i < 1; i++){ 
				if(arrayCamposTamanho[i].getText().equals("")){ 
					System.out.println(" - "); 
				} 
				else{ 
					//temp = Integer.parseInt(arrayCamposTamanho[i].getText());
					if(comboArranjos.getSelectedIndex() == 0)
						temporario = ger.arranjoDeElementosAleatorios(temp);
					else if(comboArranjos.getSelectedIndex() == 1)
						temporario = ger.arranjoDeElementosMisturados(temp);
					else if(comboArranjos.getSelectedIndex() == 2)
						temporario = ger.arranjoDeElementosCrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 3)
						temporario = ger.arranjoDeElementosDecrescentes(temp);
					else if(comboArranjos.getSelectedIndex() == 4)
						temporario = ger.arranjoDeElementosIguais(temp);
					else if(comboArranjos.getSelectedIndex() == 5){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					}
					else if(comboArranjos.getSelectedIndex() == 6){
						//s = JOptionPane.showInputDialog(null,"Informe a porcentagem de elementos aleatórios - Entre 1% e 50%","",JOptionPane.QUESTION_MESSAGE);
						int scan = Integer.parseInt(s);
						temporario = ger.arranjoDeElementosCrescentesMistos(temp, scan);
					} 
					int[] aux = ger.arranjoDeElementosAleatorios(temp);
					long tinicial = new Date().getTime();
					shellSort(aux);
					long tfinal = new Date().getTime(); 
					long texec = tfinal - tinicial; 
					//System.out.println("Tempo de Execução do algoritmo Shellsort: "+texec+"  Tamanho do arranjo: "+temp);
					valor =8 ;
					print(texec,valor);
				}
			}
		}
	}

	
	void merge(int [] A, int p, int q, int r) {
//		A subseqüência A[p...q] está ordenada
//		A subseqüência A[q+1...r] está ordenada

		int i, j, k;

//		Faz cópias das subseqüência seq1 = A[p...q] e seq2 = A[q+1...r]

		int tamseq1 = q - p + 1; // tamanho da subseqüência 1
		int tamseq2 = r - q; // tamanho da subseqüência 2

		int [] seq1 = new int [tamseq1];

		for(i=0; i < seq1.length; ++i)
			seq1[i] = A[p+i];

		int [] seq2 = new int [tamseq2];

		for(j=0; j < seq2.length; ++j)
			seq2[j] = A[q+j+1];

//		Faz a junção das duas subseqüências

		k = p; i = 0; j = 0;

		while (i < seq1.length && j < seq2.length)
		{
			// Pega o menor elemento das duas seqüências

			if(seq2[j] <= seq1[i])
			{
				A[k] = seq2[j];
				j++;
			}
			else
			{
				A[k] = seq1[i];
				i++;
			}
			k++;
		}

//		Completa com a seqüência que ainda não acabou

		while (i < seq1.length)
		{
			A[k] = seq1[i];;
			k++;
			i++;
		}

		while (j < seq2.length)
		{
			A[k] = seq2[j];
			k++;
			j++;
		}

//		A subseqüência A[p...r] está ordenada
	}
	void mergeSort(int [] numeros, int p, int r)
	{
		int q;
		if(p < r)
		{
			q = (p+r)/2;

			mergeSort(numeros, p,q);
			mergeSort(numeros, q+1,r);
			merge(numeros,p,q,r);
		} 
		
	}
	
	void quickSort(int [] A, int p, int r)
	{
		int q;
		if( p < r )
		{
			q = particao(A, p, r);
			quickSort(A, p, q-1);
			quickSort(A, q+1, r);
		}
	}

	int particao(int [] A, int p, int r)
	{
		int x, i, j, temp;

		x = A[r]; // pivo
		i = p - 1;

		for(j=p; j <= r-1; ++j)
			if(A[j] <= x)
			{
				i++;
				// trocar
				temp = A[i];
				A[i] = A[j];
				A[j] = temp;
			}

		// reposicionar o pivo
		temp = A[i+1];
		A[i+1] = A[r];
		A[r] = temp;
		return (i+1);
	}

	void quickSortAleatorio(int [] A, int p, int r)
	{
		int q;
		if( p < r )
		{
			q = particaoAleatoria(A, p, r);
			quickSortAleatorio(A, p, q-1);
			quickSortAleatorio(A, q+1, r);
		}
	}

	int particaoAleatoria (int [] A, int p, int r)
	{
		int i, temp;
		double f;

		// Escolhe um número aleatório entre p e r

		f = java.lang.Math.random(); // retorna um real f tal que 0 <= f < 1
		i =(int) (p + (r - p) * f);

		// i é tal que p <= i < r

		// Troca de posicao A[i] e A[r]

		temp = A[r];
		A[r] = A[i];
		A[i] = temp;

		return particao(A, p, r);
	}

	//HeapSort
	int pai(int i) { return (i-1)/2;}

	int esquerda(int i) { return 2*i+1;}

	int direita(int i) { return 2*i+2;}

	void refazHeapMax(int A[], int i, int compHeap)
	{
		int esq, dir, maior, menor, temp;

		esq = esquerda(i);
		dir = direita(i);

		if(esq < compHeap && A[esq] > A[i])
			maior = esq;
		else
			maior = i;

		if(dir < compHeap && A[dir] > A[maior])
			maior = dir;

		if(maior != i)
		{
			// trocar A[i] <==> A[maior]
			                      temp = A[i];
			A[i] = A[maior];
			A[maior] = temp;

			// Ajusta a posicao de maior, se incorreta.
			refazHeapMax(A, maior, compHeap);
		}
	}

	void constroiHeapMax(int [] A)
	{
		int compHeap=A.length;
		for(int i = (A.length)/2-1; i >= 0 ; i--)
			refazHeapMax(A,i,compHeap);
	}

	void heapSort(int A[])
	{
		int i, compHeap, temp;

		// Constrói o heap máximo do arranjo todo

		compHeap = A.length;

		constroiHeapMax(A);

		for(i=A.length-1; i > 0; --i)
		{    
			temp=A[0];
			A[0]=A[i];
			A[i]=temp;

			// Diminui o heap, pois A[i] está posicionado

			compHeap--;
			refazHeapMax(A,0,compHeap);
		}
	}

	//Shellsort
	void shellSort(int A [])  
	{
		int h;
		int x, i, j;

		// Determina o h maior que o comprimento do arranjo

		for(h=1; h < A.length; h = 3*h+1) 
			;

		while( h > 1) 
		{
			h = h/3; // h é dividido por três  

			for(i = h; i < A.length; ++i)
			{
				x = A[i];
				j = i;

				while(j >= h && A[j-h] > x)
				{
					A[j] = A[j-h];
					j=j-h;
				}
				A[j] = x;
			}

		}
	}
//	Metodo de impressao generico
	void print(long texec, int tipo){
		if(tipo == 1)
			texto.append("\n\nTempo de Execução do algoritmo Inserção Direta: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		if(tipo == 2){
			texto.append("\n\nTempo de Execução do algoritmo Seleção Direta: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
		}	
		if(tipo == 3){
			texto.append("\n\nTempo de Execução do algoritmo Bolha: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		}
		if(tipo == 4){
			texto.append("\n\nTempo de Execução do algoritmo MergeSort: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		}
		if(tipo == 5){
			texto.append("\n\nTempo de Execução do algoritmo QuickSort: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		}
		if(tipo == 6){
			texto.append("\n\nTempo de Execução do algoritmo QuickSort Aleatório: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		}
		if(tipo == 7){
			texto.append("\n\nTempo de Execução do algoritmoHeapSort: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		}
		if(tipo == 8){
			texto.append("\n\nTempo de Execução do algoritmo ShellSort: \n"
					+texec+"ms\n"+"Tamanho do arranjo:\n "+temp+"\n\n"); 
			
		}


	}

	
}

Agradeço desde já e fico no aguardo.

Criado 3 de dezembro de 2007
Respostas 0
Participantes 1