01 class Teste {
02 static void imprime (int[] a) {
03 for (int i=0;i<a.length;i++) {
04 System.out.print (a[i] + ",");
05 }
06 System.out.println ();
07 }
08 int[] metadeInicio (int[] a) {
09 /*Metade do inicio do array - estah correto,
10 tem que considerar a quantidade de operacoes. */
11 int[] r = new int[a.length/2];
12 for (int i=0;i<a.length/2;i++) {
13 r[i]=a[i];
14 }
15 return r;
16 }
17
18 int[] metadeFim (int[] a) {
19 /*Metade do fim do array - estah correto, para o
20 exemplo tem que considerar a quantidade de operacoes. */
21 int mais=(a.length % 2);
22 int[] r = new int[a.length/2+mais];
23 for (int i=0;i<a.length/2+mais;i++) {
24 r[i]=a[i+mais+a.length/2];
25 }
26 return r;
27 }
28
29 int[] fazAlgo (int[] a) {
30 imprime (a); // AQUI IMPRIME!
31 if (a.length<=1) return a;
32 int[] ini=metadeInicio(a);
33 int[] fim=metadeFim(a);
34 fazAlgo (ini);
35 fazAlgo (fim);
36 int i=0, iIni=0, iFim=0;
37
38 while (i<a.length) {
39 if (iIni>=ini.length) {
40 a[i]=fim[iFim];
41 iFim++;
42 } else if (iFim>=fim.length) {
43 a[i]=ini[iIni];
44 iIni++;
45 } else if (ini[iIni]<fim[iFim]) {
46 a[i]=ini[iIni];
47 iIni++;
48 } else {
49 a[i]=fim[iFim];
50 iFim++;
51 }
52 i++;
53 }
54 imprime (a); // AQUI IMPRIME!
55 return a;
56 }
57
58 Teste (int[] a) {
59 fazAlgo (a);
60 }
61
62 public static void main (String[] args) {
63 int[] a={5,3,9,7,2,1,4,8};
64 Teste t = new Teste (a);
65 imprime(a);
66 }
67 }
|
Nenhum comentário:
Postar um comentário