Hi Guys,
Preciso fazer um trabalho pra faculdade, trata-se de um programa que receba dados internos e externos e os armazene em vetores para serem ordenados, e tem de apresentar o tempo que levou a ordenação. O código atualmente está assim:
import java.text.DecimalFormat;
import java.util.concurrent.TimeUnit;
import javax.swing.JOptionPane;
public class Org666 {
public static int[]ivetorBS = new int[10];
public static int[]ivetorMS = new int[10];
public static int[]ivetorQS = new int[10];
public static String[]vetorMS = new String[10];
public static int[] BS (int[] ivetorBS ){
int aux = 0;
int i = 0;
System.out.println(" ");
for (i = 0; i < ivetorBS.length; i++) {
for (int j = 0; j < ivetorMS.length - 1; j++) {
if (ivetorBS[j] > ivetorBS[j + 1]) {
aux = ivetorBS[j];
ivetorBS[j] = ivetorBS[j + 1];
ivetorBS[j + 1] = aux;
}
}
}
return ivetorBS;
}
static int[] MS(int[] ivetorMS) {
if (ivetorMS.length <= 1) {
return ivetorMS;
}
int meio = ivetorMS.length / 2;
int[] dir = ivetorMS.length % 2 == 0 ? new int[meio] : new int[meio + 1];
int[] esq = new int[meio];
int[] aux = new int[ivetorMS.length];
for (int i = 0; i < meio; i++) {
esq[i] = ivetorMS[i];
}
int auxIndex = 0;
for (int i = meio; i < ivetorMS.length; i++) {
dir[auxIndex] = ivetorMS[i];
auxIndex++;
}
esq = MS(esq);
dir = MS(dir);
aux = mergesort(esq, dir);
return aux;
}
static int[] mergesort(int[] esq, int[] dir) {
int[] aux = new int[esq.length + dir.length];
int indexDir = 0, indexEsq = 0, indexAux = 0;
while (indexEsq < esq.length || indexDir < dir.length) {
if (indexEsq < esq.length && indexDir < dir.length) {
if (esq[indexEsq] <= dir[indexDir]) {
aux[indexAux] = esq[indexEsq];
indexAux++;
indexEsq++;
} else {
aux[indexAux] = dir[indexDir];
indexAux++;
indexDir++;
}
} else if (indexEsq < esq.length) {
aux[indexAux] = esq[indexEsq];
indexAux++;
indexEsq++;
} else if (indexDir < dir.length) {
aux[indexAux] = dir[indexDir];
indexAux++;
indexDir++;
}
}
return aux;
}
public static void QS(int[] ivetorQS) {
quick_sort(ivetorQS,0, ivetorQS.length - 1);
}
public static void quick_sort(int[] v, int ini, int fim) {
int meio;
if (ini < fim) {
meio = partition(v, ini, fim);
quick_sort(v, ini, meio);
quick_sort(v, meio + 1, fim);
}
}
public static int partition(int[] v, int ini, int fim) {
int pivo, topo, i;
pivo = v[ini];
topo = ini;
for (i = ini + 1; i <= fim; i++) {
if (v[i] < pivo) {
v[topo] = v[i];
v[i] = v[topo + 1];
topo++;
}
}
v[topo] = pivo;
return topo;
}
public static void main(String[] args) {
String op;
int i;
float aux;
op = JOptionPane.showInputDialog("Escolha uma das opções:\n 1: Dados Internos\n 2: Dados Externos ");
DecimalFormat df = new DecimalFormat("0.00");
switch(op){
case "1" :
for(i=0; i < 10; i++){
vetorMS[i] = JOptionPane.showInputDialog("Digite o "+ (i+1) + "º dado do vetor");
ivetorMS[i] = Integer.parseInt(vetorMS[i]);
ivetorQS[i] = ivetorMS[i];
ivetorBS[i] = ivetorMS[i];
}
System.out.println("Dados Digitados ");
for (i = 0; i < ivetorMS.length; i++) {
System.out.println(" " + ivetorMS[i]);
}
long start = System.nanoTime(); //Marca tempo antes da execução do método
BS(ivetorBS);
long end = System.nanoTime(); //Calcula tempo gasto pelo método
end -= start;
end = end / 1000;
String str = df.format(end);
System.out.println("Vetor organizado BubbleSort:");
for (i = 0; i < ivetorBS.length; i++) {
System.out.println(" " + ivetorBS[i]);
}
System.out.println("Tempo de execução: " + str + " Microsegundos");
start = System.nanoTime(); //Marca tempo antes da execução do método
ivetorMS = MS(ivetorMS);
end = System.nanoTime(); //Calcula tempo gasto pelo método
end = end - start;
end = end / 1000;
str = df.format(end);
System.out.println("Vetor organizado MergeSort:");
for (i = 0; i < ivetorMS.length; i++) {
System.out.println(" " + ivetorMS[i]);
}
System.out.println("Tempo de execução: " + str + " Microsegundos");
start = System.nanoTime(); //Marca tempo antes da execução do método
QS(ivetorQS);
end = System.nanoTime(); //Calcula tempo gasto pelo método
end -= start;
end = end / 1000;
str = df.format(end);
System.out.println("Vetor organizado QuickSort:");
for (i = 0; i < ivetorQS.length; i++) {
System.out.println(" " + ivetorQS[i]);
}
System.out.println("Tempo de execução: " + str + " Microsegundos");
case "2" :
System.out.println("Dados Digitados ");
for (i = 0; i < ivetorMS.length; i++) {
System.out.println(" " + ivetorMS[i]);
}
start = System.nanoTime(); //Marca tempo antes da execução do método
BS(ivetorBS);
end = System.nanoTime(); //Calcula tempo gasto pelo método
end -= start;
end = end / 1000;
str = df.format(end);
System.out.println("Vetor organizado BubbleSort:");
for (i = 0; i < ivetorBS.length; i++) {
System.out.println(" " + ivetorBS[i]);
}
System.out.println("Tempo de execução: " + str + " Microsegundos");
start = System.nanoTime(); //Marca tempo antes da execução do método
ivetorMS = MS(ivetorMS);
end = System.nanoTime(); //Calcula tempo gasto pelo método
end = end - start;
end = end / 1000;
str = df.format(end);
System.out.println("Vetor organizado MergeSort:");
for (i = 0; i < ivetorMS.length; i++) {
System.out.println(" " + ivetorMS[i]);
}
System.out.println("Tempo de execução: " + str + " Microsegundos");
start = System.nanoTime(); //Marca tempo antes da execução do método
QS(ivetorQS);
end = System.nanoTime(); //Calcula tempo gasto pelo método
end -= start;
end = end / 1000;
str = df.format(end);
System.out.println("Vetor organizado QuickSort:");
for (i = 0; i < ivetorQS.length; i++) {
System.out.println(" " + ivetorQS[i]);
}
System.out.println("Tempo de execução: " + str + " Microsegundos");
}
}
}
Mas n sei como pegar os dados de um arquivo txt e armazenar cada linha em um vetor, se puderem me ajudar sou muito grato