Você está na página 1de 13

1

Arrays e Matrizes em Java


Sistemas Informticos I, 2005-2006
Slides_Java_4
Tabelas e Matrizes
A[10]
B[8][6]
Imaginemos que necessrio escrever um programa que:
leia uma lista de 50 alunos e as respectivas notas.
calcule a nota mdia.
escreva a diferena da nota de cada aluno para a nota mdia.
Seria necessrio declarar variveis separadas para cada um
dos 50 alunos:
String nome1, nome2, nome3, , nome50
int nota1, nota2, nota3, , nota50
Isto no exequvel!...
Necessidade de usarmos Tabelas
Soluo: utilizar tabelas (arrays)
Uma tabela um objecto que contm uma lista
ordenada de elementos, todos do mesmo tipo.
Os elementos so indexados por um ndice que pode
variar entre 0 e n-1, sendo n a dimenso da tabela.
0 1 2 3 + 5 6 7 8 9 10 11 12 13 1+ 15 . n

+3 22 77 12 89 23 66 25 99 +6 77 39 2+ 27 11 87 ... 26
Arrays
n
-1
2
Para criar uma tabela:
Declarar a tabela
double [] notas; // declara uma tabela de floats
double notas[]; // o mesmo efeito...
Instanciar a tabela ( necessrio usar new para criar a tabela
porque as tabelas so objectos)
notas = new double [50]; // cria uma tabela com 50 doubles
Inicializar e aceder aos elementos
notas [0] = 14.7;
notas [1] = 10.2;
...
soma = notas [0] + notas [1];
System.out.println(notas [0]);
Exemplo
notas[49] = 20.0;
Elementos dos Arrays
Um elemento de uma tabela um espao onde se pode armazenar
um valor do tipo declarado.
Os elementos de uma tabela podem ser usados em qualquer ponto
de um programa onde possa ser usado um elemento desse tipo.
Ex: notas [1] pode ser usado nas mesmas circunstncias em que
uma varivel do tipo double pode ser usada (podemos atribuir-lhe
um valor, imprimi-la, utiliz-la em expresses, )
Em resumo...
Declarar um array:
int r[];
double nums[];
String nomes[];
Criar um array
r = new int[10];
nums = new double[100];
int s[] = new int[20];
char c[] = new char[20];
Indexar os elementos de um array:
r[0] = 20;
r[9] = 100;
nums[99] = 3.2;
s[0] = 5;
s[1] = r[0];
class Notas {
public static void main(String arg[]) {
final int MAX = 50;
float [] notas = new float [MAX];
int conta = 0;
float n, media;
// leitura das notas (termina com n negativo)
do {
System.out.print ("Nota do aluno "+conta+" ");
n = Keyboard.readFloat();
if (n >=0) {
notas [conta] = n;
conta ++;
}
}while (n >= 0 && conta < MAX);
Voltando ao problema...
3
// clculo da mdia
float soma=0;
for (int i=0; i<conta; i++)
soma = soma + notas[i];
if (conta > 0)
media = soma / conta;
else media = 0;
System.out.println (media);
// Diferenas para a mdia
System.out.println ("Diferenas para a mdia:");
for (int i=0; i<conta; i++)
System.out.println ("Aluno "+i+" "+(notas[i]-media));
}
}
continuao...
possvel criar e inicializar uma tabela de forma
semelhante aos tipos simples:
int diasMes[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
A tabela criada com o espao suficiente para os dados
fornecidos na inicializao (12 neste caso).
Assim, a instruo anterior equivalente a:
int diasMes[] = new int [12];
diasMes [0] = 31;
diasMes [1] = 28;

diasMes [11] = 31;


Criao de Tabelas
Duas formas de criar tabelas
int n[ ] = {10,34,48,35,5,7,3,8,6,12};
Alternativamente:
int n[] = new int[10];
n[0] = 10;
n[1] = 34;
...
n[9] = 12;
Exemplo1
cIoss Arroy {
pubIic sfofic void moin(Sfring orgs[]) {
inf monfh_doys[],
month_duys = new int[1Zj;
monfh_doys[0] ~ 3I,
monfh_doys[I] ~ Z8,
monfh_doys[Z] ~ 3I,
monfh_doys[3] ~ 30,
monfh_doys[4] ~ 3I,
monfh_doys[b] ~ 30,
monfh_doys[o] ~ 3I,
monfh_doys[7] ~ 3I,
monfh_doys[8] ~ 30,
monfh_doys[9] ~ 3I,
monfh_doys[I0] ~ 30,
monfh_doys[II] ~ 3I,
Sysfem.ouf.prinfIn("ApriI hos " + monfh_doys[3] + " doys."),
}
}
4
Exemplo2
cIoss AufoArroy {
pubIic sfofic void moin(Sfring orgs[]) {
inf monfh_doys[] ~ { 3I, Z8, 3I, 30, 3I, 30, 3I, 3I, 30, 3I, 30, 3I },
Sysfem.ouf.prinfIn("ApriI hos " + monfh_doys[3] + " doys."),
}
}
3 Exerccios Simples
int tab[] = new int[100];
Escreva umas linhas de cdigo para:
(a) colocar os 100 primeiros inteiros (1,2,...,100)
na tabela tab[0],...,tab[99];
(b) colocar os 50 primeiros nmeros pares
(2,4,...,100) na tabela tab[0],...,tab[49];
(a) colocar os 100 primeiros inteiros em ordem
inversa (100, 99,...,1) na tabela tab[0],...,tab[99];
Resoluo
int tab[] = new int[100];
for(int i=0; i < 100; i++)
tab[i] = i+1;
for(int i=0; i < 50; i++)
tab[i] = 2*(i+1);
for(int i=0; i < 100 ; i++)
tab[i] = 100-i;
for(int i=100; i > 0 ; i--)
tab[100-i] = i;
Quando se cria uma tabela com n elementos, esse o nmero mximo
que a tabela pode armazenar.
Uma vez criada no possvel alterar o seu tamanho.
O campo length guarda o nmero mximo de elementos que a
tabela pode armazenar. Este campo apenas pode ser lido:
inf numMox ~ nofos.Iengfh,
Isto no implica que a tabela deva estar sempre cheia:
Em cada momento poder conter entre 0 e n elementos
Um cuidado importante quando se usam tabelas respeitar os
limites para os ndices (0 a n-1)
A utilizao de ndices fora dos limites leva o Compilador de Java a
gerar uma excepo:
Java.lang.ArrayIndexOutOfBoundsException
Tamanho de Arrays: length
5
Exemplo
imporf essenfioI.^,
pubIic cIoss Arroy8ound {
pubIic sfofic void moin(Sfring[] orgs){
inf x[] ~ new inf[I0],
for(inf i~0, i ~ I0, i++)
x[i] ~ i,
}
}
java.lang.ArrayIndexOutOfBoundsException
at ArrayBound.main(ArrayBound.java:7)
Exception in thread "main" Finished
executing
Exemplo: uso de length
// This progrom demonsfrofes fhe Iengfh orroy member.
cIoss Lengfh {
pubIic sfofic void moin(Sfring orgs[]) {
inf oI[] ~ new inf[I0],
inf oZ[] ~ {3, b, 7, I, 8, 99, 44, -I0},
inf o3[] ~ {4, 3, Z, I},
Sysfem.ouf.prinfIn("Iengfh of oI is " + oI.Iengfh),
Sysfem.ouf.prinfIn("Iengfh of oZ is " + oZ.Iengfh),
Sysfem.ouf.prinfIn("Iengfh of o3 is " + o3.Iengfh),
}
}
Soma de dois Vectores
// A[n]
// 8[n]
// C ~ A + 8
cIoss SomoVecfores{
pubIic sfofic void moin(Sfring orgs[]){
inf A[] ~ new inf[I0],
inf 8[] ~ {I, Z, 3, 4, b, o, 7, 8, 9, I0},
inf C[] ~ new inf[I0],
// inicioIi;or Vecfor A
for(inf i~0, i I0, i++)
A[i] ~ I00,
}
}
}
for(int i=0; i < 10; i++){
C[i] = A[i] + B[i];
System.out.println("C["+i+"]= "+ C[i]);
Uma tabela tanto pode conter elementos de um tipo simples, como referncias para
outros objectos, como Strings por exemplo.
String [] frases = new String [25];
reserva espao para 25 referncias para objectos String.
No entanto, esta instruo no cria as Strings propriamente ditas, mas apenas
as referncias respectivas.
As Strings tm que ser criadas explicitamente:
frases [0] = new String (Bom dia); ou
frases [1] = Bom dia;
....
Tabelas de Strings
6
Exemplo
imporf essenfioI.^,
cIoss Tob_Sfrings {
pubIic sfofic void moin(Sfring orgs[]) {
inf n,
Sysfem.ouf.prinf("Mumero de oIunos ~ "),
n ~ Ieyboord.reodInf(),
Sysfem.ouf.prinfIn("~~~~~~IMPUT DADOS~~~~~~~~~"),
Sfring Tob[] ~ new Sfring[n], // oIoco espoo poro o fobeIo
for(inf i~0,i n, i++){
Sysfem.ouf.prinf("Mome do oIuno "+i+" :"),
Tob[i] ~ Ieyboord.reodLine(), // guordo sfrings no fobeIo
}
Sysfem.ouf.prinfIn("~~~~~~MOMES~~~~~~~~~"),
for(inf i~0,i n, i++)
Sysfem.ouf.prinfIn("Mome do oIuno "+i+" :"+ Tob[i]),
}
}
Matrizes em Java
Uma tabela bi-dimensional representa uma matriz, com
linhas e colunas.
Cada elemento de uma tabela bi-dimensional
referenciado usando dois ndices: um para as linhas e
outro para as colunas.
Na realidade, uma tabela bi-dimensional uma tabela
de tabelas, ou seja uma tabela uni-dimensional em
que cada elemento uma referncia para um objecto
tabela.
Exemplo:
inf[ ][ ] fwoD ~ new inf[3][b],
Matrizes
Por exemplo, imaginemos que precisamos de armazenar
as classificaes de 200 alunos em 4 testes.
Poderamos usar:
float [][] notas = new float [200][4];
Neste caso os ndices podem variar entre 0 e 199 e entre 0 e 3,
sendo errado tentar aceder a ndices fora destas gamas.
Para aceder a um dado elemento usam-se 2 ndices:
notas [0][0] = 14.3;
notas [199][3] = 10.2;
Para saber a dimenso da tabela:
int numLinhas = notas.length;
int numColunas = notas [0].length;
Matrizes
7
Inicializao de uma Matriz

4 3
2 1
inf[][] m ~ { {I,Z}, {3,4} },
possvel criar e inicializar uma tabela bi-
dimensional numa nica instruo:
inf [] [] fobeIo ~ {{I,0,I}, {0,I,0}}
Esta instruo cria uma tabela de inteiros com duas
linhas e trs colunas, inicializada com os valores dados
Alternativa:
inf A[][] ~ new inf[n][m],
for(inf i~0, i n, i++)
for(inf j~0, j m,j++)
A[i][j] ~ i+j,
Inicializao de Matrizes
1 0 1
0 1 0
Representao Array 2D
inf n ~ 0,
for(inf i ~ 0, i 3, i++)
for(inf j ~ 0, j b, j++)
fwoD[i][j] ~ n++,
Exemplo1
cIoss Mofrix {
pubIic sfofic void moin(Sfring orgs[]) {
doubIe m[][],
m ~ new doubIe[4][4],
m[0][0] ~ I,
m[I][I] ~ I,
m[Z][Z] ~ I,
m[3][3] ~ I,
Sysfem.ouf.prinfIn(m[0][0] +" "+ m[0][I] +" "+ m[0][Z] +" "+ m[0][3]),
Sysfem.ouf.prinfIn(m[I][0] +" "+ m[I][I] +" "+ m[I][Z] +" "+ m[I][3]),
Sysfem.ouf.prinfIn(m[Z][0] +" "+ m[Z][I] +" "+ m[Z][Z] +" "+ m[Z][3]),
Sysfem.ouf.prinfIn(m[3][0] +" "+ m[3][I] +" "+ m[3][Z] +" "+ m[3][3]),
}
}
8
Exemplo2
cIoss AufoMofrix {
pubIic sfofic void moin(Sfring orgs[]) {
doubIe m[][] ~ {
{ 0, 0, 0, 0},
{ 0, I, Z, 3},
{ 0, Z, 4, o},
{ 0, 3, o, 9},
},
Sysfem.ouf.prinfIn(m[0][0] +" "+ m[0][I] +" "+ m[0][Z] +" "+ m[0][3]),
Sysfem.ouf.prinfIn(m[I][0] +" "+ m[I][I] +" "+ m[I][Z] +" "+ m[I][3]),
Sysfem.ouf.prinfIn(m[Z][0] +" "+ m[Z][I] +" "+ m[Z][Z] +" "+ m[Z][3]),
Sysfem.ouf.prinfIn(m[3][0] +" "+ m[3][I] +" "+ m[3][Z] +" "+ m[3][3]),
}
}
Matriz Identidade
cIoss IDMofrix {
pubIic sfofic void moin (Sfring orgs[]) {
doubIe[][] ID,
ID ~ new doubIe[4][4],
for (inf row~0, row 4, row++) {
for (inf coI~0, coI 4, coI++) {
if (row l~ coI) {
ID[row][coI]~0.0,
}
eIse {
ID[row][coI] ~ I.0,
}
}
}
}
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Somar duas matrizes
Como somar duas matrizes:
A[n][m]
B[n][m]
C=A+B
Soma de duas Matrizes
cIoss SomoMofri;es{
pubIic sfofic void moin(Sfring orgs[]){
inf A[][] ~ new inf[I0][3],
inf 8[][] ~ new inf[I0][3],
inf C[][] ~ new inf[I0][3],
// comenforio,. inicioIi;or Mofri; A: A[i][j]~ I
// comenforio,. inicioIi;or Mofri; 8: 8[i][j]~ Z
for(inf i~0, i I0, i++)
for(inf j~0, j 3, j ++){
A[i][j] ~ I,
8[i][j] ~ Z,
}
Sysfem.ouf.prinfIn("MATPIZ C"),
for(inf i~0, i I0, i++){
for(inf j~0, j 3, j ++){
C[i][j]~ A[i][j] + 8[i][j],
Sysfem.ouf.prinf(C[i][j]+ " "),
}
Sysfem.ouf.prinfIn(),
}
}
}
9
Exerccio
Escreva um programa em Java para calcular
o mnimo e o mximo valor numa matriz.
Encontrar Mnimo numa Matriz
cIoss Find_Minimum{
pubIic sfofic void moin(Sfring Args[]) {
inf mofri;[][] ~ new inf[Z0][Z0],
inf minimum, x, y,
inf i,j,
Sysfem.ouf.prinfIn("Mofri; InicioI: " ),
for (i ~0, iZ0,i++){
for(j~0, jZ0, j++) {
mofri;[i][j] ~ (inf) Mofh.fIoor((Mofh.rondom() ^ I00)),
Sysfem.ouf.prinf(mofri;[i][j] + " " ),
}
Sysfem.ouf.prinfIn(),
}
Sysfem.ouf.prinfIn(),
// find minimum
minimum ~ mofri;[0][0], // no inicio o minimo e iguoI mofri;[0][0]
x ~ -I, // x e y voo guordor os coordenodos
y ~ -I, // onde se enconfror o voIor minimo
for (i~0, iZ0,i++)
for(j~0, jZ0, j++) {
if(mofri;[i][j] minimum){
minimum ~ mofri;[i][j],
x ~ i,
y ~ j,
}
}
Sysfem.ouf.prinfIn("MIMIMUM VALUE ~ " + minimum + " enconfrodo no coordenodo ("+x+","+y+")"),
Sysfem.ouf.prinfIn(),
}
}
// Determinar qual a classificao mais alta da tabela.
// Assume-se que as notas j foram introduzidas na tabela.
float tabela[][] = new float[40][4];
// 40 alunos, 4 testes
float notaMax = tabela [0][0];
int lin = 0, col = 0;
for (int i=0; i < tabela.length; i++)
for (int j=0; j < tabela [0].length; j++)
if (tabela [i][j] > notaMax) {
notaMax = tabela [i][j];
lin = i;
col = j
}
System.out.println ("Nota mxima "+notaMax);
System.out.println ("Obtida pelo aluno "+lin);
System.out.println ("No teste "+col);
}
Encontrar o Mximo Matrizes 3D
Declarao de uma matriz tri-dimensional 10x10x10:
int Mat3D [][][] = new int[10][10][10];
10
Exemplo
cIoss fhreeDMofrix {
pubIic sfofic void moin(Sfring orgs[]) {
inf fhreeD[][][] ~ new inf[3][4][b],
inf i, j, k,
for(i~0, i3, i++)
for(j~0, j4, j++)
for(k~0, kb, k++)
fhreeD[i][j][k] ~ i ^ j ^ k,
for(i~0, i3, i++) {
for(j~0, j4, j++) {
for(k~0, kb, k++)
Sysfem.ouf.prinf(fhreeD[i][j][k] + " "),
Sysfem.ouf.prinfIn(),
}
Sysfem.ouf.prinfIn(),
}
}
}
Soma de dois Cubos
cIoss SomoCubos{
pubIic sfofic void moin(Sfring orgs[]){
inf A[][][] ~ new inf[I0][3][b],
inf 8[][][] ~ new inf[I0][3][b],
inf C[][][] ~ new inf[I0][3][b],
for(inf i~0, i I0, i++)
for(inf j~0, j 3, j++)
for(inf k~0, k b, k++){
A[i][j][k] ~ I,
8[i][j][k] ~ Z,
}
Sysfem.ouf.prinfIn("CU8O C"),
for(inf i~0, i I0 , i++){
for(inf j~0, j 3, j++)
for(inf k~0, k b, k++){
C[i][j][k] ~ A[i][j][k] + 8[i][j][k],
Sysfem.ouf.prinf(C[i][j][k]+ " "),
}
Sysfem.ouf.prinfIn(),
}
}
}
Exerccios sobre Arrays e
Matrizes
Calcular a Mdia de Um Array e o
Elemento mais distante da mdia
imporf essenfioI.^,
pubIic cIoss FurfhesfFromMeonZ {
pubIic sfofic void moin(Sfring[] orgs) {
Sysfem.ouf.prinfIn("Infrodu;o b nmeros:"),
inf x[] ~ new inf[b], // decIoro umo fobeIo de b infs
inf sum ~ 0,
for(inf i~0, i x.Iengfh, i++){ // I os b infeiros e coIcuIo o suo somo
x[i] ~ Ieyboord.reodInf(),
sum ~ sum + x[i],
}
doubIe medio ~ sum/(doubIe)x.Iengfh, // coIcuIo o medio
Sysfem.ouf.prinfIn("A medio ~ " + medio),
doubIe femp ~ Mofh.obs(medio - x[0]),
inf ifem ~ 0,
for(inf i~I, i x.Iengfh, i++){
doubIe gop ~ Mofh.obs(medio - x[i]),
if (gop femp){
femp ~ gop,
ifem ~ i,
}
}
Sysfem.ouf.prinfIn("Mmero mois disfonfe do medio: " + x[ifem]),
}
}
11
Problema Transporte
Uma empresa de beto tem 3 fbricas (F1, F2, F3) que devem
fornecer 3 obras de construo (O1, O2, O3). Os custos por
transporte de uma carga de cada fbrica para cada obra so os
representados na seguinte matriz:
Considere agora que as 3 fbricas podem produzir 4, 12 e 8
cargas por dia e as obras precisam de 10, 9 e 5 cargas por dia,
respectivamente. Suponha agora que o gestor das fbricas prope
o seguinte esquema de transporte representado na matriz
seguinte:

24 10 7
35 18 17
10 12 3
3
2
1
F
F
F

5 3 0
0 6 6
0 0 4
3
2
1
F
F
F
3 2 1 O O O
3 2 1 O O O
Problema Transporte
Calcule o custo do esquema proposto.
Custo = 3x+ + 12x0 + ... + 2+x5
Escreva um programa em Java para calcular
o custo deste cenrio de transporte.
Soluo
imporf essenfioI.^,
pubIic cIoss fronsporf {
pubIic sfofic void moin(Sfring[] orgs){
doubIe [][] cosf_fobIe ~ {{3,IZ,I0},{I7,I8,3b},{7,I0,Z4}},
doubIe [][] esquemo ~ {{4,0,0},{o,o,0},{0,3,b}},
inf cusfo~0,
for(inf i~0, i cosf_fobIe.Iengfh, i++)
for(inf j~0, j cosf_fobIe[0].Iengfh, j++)
cusfo ~ cusfo + cosf_fobIe[i][j] ^ esquemo[i][j],
Sysfem.ouf.prinfIn("Cusfo fofoI do fronsporfe ~ "+cusfo),
}
}
Exerccio 1A
Escreva um programa em Java que leia uma
matriz de um ficheiro em disco
matriz.txt.
O programa deve indicar se uma matriz
identidade ou no.
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
4
12
Exerccio 1B
Escreva um programa em Java que leia duas
matrizes de dois ficheiros em disco
mat_A.txt e mat_B.txt.
O programa deve indicar se as duas matrizes
so iguais ou diferentes. Se forem diferentes
deve indicar quantos so os valores
diferentes.
1 2 3 4
4 5 6 7
7 8 9 0
0 1 2 3
1 2 3 4
4 5 6 7
7 8 9 0
0 1 2 3
1 2 3 4
4 5 5 7
7 1 9 0
0 1 2 3
4 4
4
Exerccio 2
Escreva um programa em Java que verifique
se uma matriz A[N][N] ou no uma matriz
simtrica.
1 2 3 4
2 5 6 7
3 6 9 0
4 7 0 3
Caso no seja uma matriz simtrica deve
inverter a matriz da seguinte forma:
1 2 2 2
5 4 2 2
5 5 4 2
5 5 5 4
1 5 5 5
2 4 5 5
2 2 4 5
2 2 2 4
Multiplicao de Matrizes
A = B =
C = A x B =
C
ij
= A
ik
x B
kj
com migual ao nmero de colunas de A.

=
m
k 1

+ +
+ +
4 * 4 2 * 3 3 * 4 1 * 3
4 * 2 2 * 1 3 * 2 1 * 1
y x y x y x y x
y x y x y x y x

4 3
2 1
x x
x x

4 3
2 1
y y
y y

4 3
2 1

1 0
6 5

14 15
4 5
x =
5 = 1x5 + 2x0
Multiplicao de Matrizes
pubIic cIoss MuItipIy{
pubIic sfofic void moin(Sfring orgs[]){
doubIe [][] A ~ {{I,Z},{3,4}},
doubIe [][] 8 ~ {{b,o},{0,-I}},
inf n ~ A.Iengfh, //nmero de Iinhos do mofri; A
inf m ~ A[0].Iengfh, //nmero de coIunos do mofri; A (deve ser iguoI oo nmero de Iinhos de 8)
inf p ~ 8[0].Iengfh, //nmero de coIunos de 8
doubIe [][] V ~ new doubIe[n][p],
for (inf i ~ 0, i n, i++){
for (inf j ~ 0, j p, j++){
C[i][j] ~ 0,
for (inf k ~ 0, k m, k++)
C[i][j] +~ A[i][k]^8[k][j],
}
}
for (inf i ~ 0, i C.Iengfh, i++){
for (inf j ~ 0, j C[0].Iengfh, j++)
Sysfem.ouf.prinf(C[i][j] + "\f"),
Sysfem.ouf.prinfIn(),
}
}
}
13
Nmero Par = Soma de dois
nmeros primos
Ser que cada nmero par igual soma de dois
nmeros primos?
Verifique com a tabela de primos em baixo (N >= 8 at 52)
Exemplos: 12 = 5 + 7
28 = ... + ...
40 = ... + ...
52 = ... + ...
inf primes[] ~ {Z,3,b,7,II,I3,I7,I9,Z3,Z9,3I,37,4I,43},
Soluo
public class prime_even{
public static void main(String args[]){
int primes[] = {2,3,5,7,11,13,17,19,23,29,31,37,39,41,43,46};
int i,j,soma;
boolean found=false;
for(int N=8; N < 54; N=N+2){
//testa os primeiros 50 pares
found = false;
i = 0;
while((!found) && (i < primes.length)){
j = 0;
while((!found) && (j < primes.length)){
if(i != j){
soma = primes[i] + primes[j];
if(soma == N){
found = true;
System.out.println(N+" = "+primes[i]+" + "+primes[j]);
}
}
j++;
}// 2o while
i ++;
} // 1o while
}
}
}
Ordenar uma Tabela
Considere que tem uma tabela de 10 inteiros
que inicializada com valores aleatrios:
n ~ new inf[I0],
// inifioIi;e fhe orroy
for (inf i ~ 0, i I0, i++) {
n[i] ~ (inf)(Mofh.rondom()^I00),
}
Escreva um programa para ordenar esta
tabela.
Ordenar uma Tabela
cIuss ubbIeSort {
pubIic sfofic void moin(Sfring orgs[]) {
inf[] n,
n ~ new inf[I0],
// inifioIi;e fhe orroy
for (inf i ~ 0, i I0, i++) {
n[i] ~ (inf)(Mofh.rondom()^I00),
}
// prinf fhe orroys inifioI order
Sysfem.ouf.prinfIn("8efore sorfing:"),
for (inf i ~ 0, i I0, i++) {
Sysfem.ouf.prinfIn("n["+i+"] ~ " + n[i]),
}
booIeon sorfed ~ foIse,
// sorf fhe orroy
whiIe (lsorfed) {
sorfed ~ frue,
for (inf i~0, i 9, i++) {
if (n[i] n[i+I]) {
inf femp ~ n[i],
n[i] ~ n[i+I],
n[i+I] ~ femp,
sorfed ~ foIse,
}
}
}
// prinf fhe sorfed orroy
Sysfem.ouf.prinfIn(),
Sysfem.ouf.prinfIn("Affer sorfing:"),
for (inf i ~ 0, i I0, i++) {
Sysfem.ouf.prinfIn("n["+i+"] ~ " + n[i]),
}
}
}

Você também pode gostar