Innanzitutto grazie a entrambi.
Posto il codice funzionante che ho scritto (qualunque commento è ben accetto).
Questa è la classe della lista ordinata:
package ArrayEx;
public class SortedArray {
private int[] myarray = new int[100];
public SortedArray(int[] myarray) {
this.myarray = myarray;
sort();
}
public void print(){
for(int i:myarray){
System.out.println(i);
}
}
private void sort(){
for(int i = 0; i < myarray.length; i++){
for(int j = 0; j < myarray.length-1; j++){
if(myarray[j] > myarray[j+1]){
int tmp = myarray[j+1];
myarray[j+1] = myarray[j];
myarray[j] = tmp;
}
}
}
}
private int getMaxIndex(){
int max = myarray[0], index = 0;
for(int i = 0; i < myarray.length; i++){
if(myarray[i] > max){
max = myarray[i];
index = i;
}
}
return index;
}
public void add(int a){
int index = getMaxIndex();
myarray[index] = a;
sort();
}
public void add(int[] a){
for(int z:a){
int index = getMaxIndex();
myarray[index] = z;
}
sort();
}
}
Questo è il main per testare il tutto:
package ArrayEx;
import java.util.Random;
public class arrayApp {
public static void main(String[] args) {
int[] array = new int[100];
for(int i = 0; i < array.length; i++){
Random rn = new Random();
array[i] = rn.nextInt(200);
}
SortedArray mylist = new SortedArray(array);
mylist.print();
int[] a = {1, 3, 7, 2, 8, 11, 0};
//int x = 1;
mylist.add(a);
mylist.print();
}
}
Rispondo alle domande e poi vi pongo le mie.
andbin ha scritto:
Domande (su cose che non hai precisato). L'array deve essere istanziato fisso a 100 elementi di capacità e devi gestire tu il numero "logico" di elementi? Oppure devi ricrearlo più capiente man mano che aggiungi elementi (considerando comunque quel limite di 100)?
Non è specificato. Io l'ho istanziato fisso (se ho capito bene quello che intendi). Cosa avrei dovuto fare negli altri casi?
Per il resto vorrei chiedervi:
- Innanzitutto, il codice "ha senso", sia da un punto di vista di quello che fa che della struttura che ha?
- Le due classi private, quelle che fanno il sort e trovano l'indice del max, dovrebbero essere dichiarate static? Non credo di aver ben capito cos'è e cosa fa un metodo (o un attributo) static.
Grazie mille a entrambi, siete stati chiarissimi e utili