Bem, sou iniciante em Java e tenho algumas duvidas.
preciso gerar um vetor de N posições e DESordenar os índices em cada posição do vetor. Ex: um usuario vai entrar um numero limitante 10. então terei int A [] = new int[10];
mas como usar o Math.random() para que cada posição do vetor contenha um índice (não repetido), ou seja, quero gerar uma lista desordenada, pois estou implementando o algoritmo de QuickSort.
agradeço a quem ajudar.
bom…
vamos lá…
1-vc não poderá adcionar tipos primitivos em um vector… int … é um tipo privimito… entaum use Integer
[code]Integer[] a = new Integer[10];
2- antes de acionar o interio ao vector teste… se ele já existe… o código fica algo mais ou menos assim
[/code]
Vector v = new Vector();
Integer temp = null;
while (v.size() < 10) {
temp = new Integer((int)Math.floor(Math.random()*10))
if (!v.contains(temp))
v.add(temp);
}
Tente o seguinte:
int A[] = new int[10];
Vector v = new Vector();
for(;v.size() < 10;)
{
Integer n = new Integer(random.nextInt(10));
if(v.contains(n))
continue;
v.addElement(n);
}
for(int i = 0; i < 10; i++)
A[i] = ((Integer) v.elementAt(i)).intValue();
Obs. não testei o código.
só comentando o código… que eu eskeci de fazer antes…
ele entra num loop… só sia dele quando tiver 10 itens dentro do VETOR…
dentro do loop ele coloca um valor de 1 a 10 dentro do temp
este valor ele testa se já existe no vetor… se já existe… ele não adiciona… c não existe… ele adciona… e fica fazendo isso… ate ter colocado os 10
[quote=“hipersoft”]Tente o seguinte:
int A[] = new int[10];
Vector v = new Vector();
for(;v.size() < 10;)
{
Integer n = new Integer(random.nextInt(10));
if(v.contains(n))
continue;
v.addElement(n);
}
for(int i = 0; i < 10; i++)
A[i] = ((Integer) v.elementAt(i)).intValue();
Obs. não testei o código.[/quote]
só não entendi uma coisa deste código… quem é a variavel random … que vc xama o método .nextInt(10) ??
Para gerar sequências estocásticas:
Random random = new Random();
Para gerar sequências pseudoaleatórias repetidas:
Random random = new Random(5);