Bom dia Amigos, não estou conseguindo implementar o metodo InsereOrdenado, as posições aleatórias do vetor me deixam confuso.
class ListaUsandoVetor {
int tam_vet_elem, prim, num_elem;
No vet_elem[];
ListaUsandoVetor(int tam_vet_elem) {
prim = -1;
num_elem = 0;
this.tam_vet_elem = tam_vet_elem;
vet_elem = new No[tam_vet_elem];
int i;
for(i = 0; i < tam_vet_elem; i++)
vet_elem[i] = null;
}
class No {
int mat;
float nota;
String nome;
int prox_no;
No(int mat, float nota, String nome) {
this.mat = mat;
this.nota = nota;
this.nome = nome;
prox_no = -1;
}
}
void InsereOrdenado(int mat, float nota, String nome) {
int num_elem = 3;
int tam_vel_elem = 3;
Random gerador = new Random();
int n;
do {
n = gerador.nextInt() % tam_vet_elem;
if ((n >= 0) && (vet_elem[n] == null))
break;
} while(true);
vet_elem[n] = new No(mat, nota, nome);
No aux = vet_elem[n];
int pos = num_elem -1;
while ((pos > -1) && (vet_elem[pos].nota > aux.nota))
vet_elem[pos + 1] = vet_elem[pos];
aux = vet_elem[pos + 1];
num_elem++;
}
void Imprime() {
int ind = prim;
while (ind != -1) {
System.out.println(vet_elem[ind].mat + " " + vet_elem[ind].nota + " " + vet_elem[ind].nome);
ind = vet_elem[ind].prox_no;
}
}