Как я делаю для того, чтобы эта программа организовала данные в том же самом Array
так что сначала были числа, самые превосходящие 0 и после нули в методе Ordenar()
? Например:
Вход
(2,3,0,1,0)
Выход
(2,3,1,0,0)
Здесь posteo код, который я приношу
Scanner leer=new Scanner(System.in);
for(i=0;i<a.length;i++){
System.out.print("ingrese posicion["+i+"]=");
a[i]=leer.nextInt();
}
Ordenar();
}//main
static public void Ordenar(){
//Código que necesito
}
Хороший dГ - в Камило, чтобы организовывать Array, они существуют различные mГ©todos распоряжения уже определенные, aquГ - оставил тебе artГ-зад на этом и Ваш implementaciГіn в Java. DespuГ©s, в которое я вижу в твоем одиноком примере, ты нуждаешься в менять нули posiciГіn. из-за которого я recomendarГ - в одну modificaciГіn mГ©todo пузырек воздуха, который serГ - в asГ -
public static void burbuja(int[]matrix){
int temp;
for(int i=1;i < matrix.length;i++){
for (int j=0 ; j < matrix.length- 1; j++){
if (matrix[j] == 0){
temp = matrix[j];
matrix[j] = matrix[j+1];
matrix[j+1] = temp;
}
}
}
}
, Введенные
(2,3,0,1,0)
Полученный
(2,3,1,0,0)
AquГ - оставил тебе cГіdigo уже проверено, соединение .
То, что я понимаю, состоит в том, что ты не хочешь традиционный "sort", если не, что ты просто желаешь, что 0
находитесь в конце концов, в то время как остальные числа предохраняют Вашу команду в array.
Способ это делать - в 2 этапах:
Этот одинокий метод требует максимума array.length x 2
повторения в худшем случае, а следовательно он не является очень дорогим.
Код:
public static void main (String [] args) {
int[] a = new int[] {0,0,2,3,0,0,0,1,0,4};
// Primer pase, correr los numeros que no son cero a la izquierda.
int lastNonZeroIndex = 0;
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {
if (i != lastNonZeroIndex) {
a[lastNonZeroIndex] = a[i];
}
lastNonZeroIndex++;
}
}
// Segundo pase, llenar el resto del array con ceros.
for (int i = lastNonZeroIndex; i < a.length; i++) {
a[i] = 0;
}
System.out.println(Arrays.toString(a));
}
Результат:
[2, 3, 1, 4, 0, 0, 0, 0, 0, 0]
Ты можешь инициализировать array, в котором ты будешь сохранять данные, так как ты таким образом убеждаешься, что всей стоимости будет являться 0 по умолчанию.
int[] a = new int[5];
Потом только ты должен сохранять Гєltima posiciГіn, в которой вышел один nГєmero больше, чем нуль, и сохранять в этой posiciГіn новую стоимость большую, чем нуль, который он ввел. Однажды сделанный это, складывать один для того, чтобы следующая стоимость большая, которую нуль вводит в новости ultimaPosicion
.
Полная программа quedarГ - в:
public static void main(String[] args) {
Scanner leer=new Scanner(System.in);
int[] a = new int[5];
int ultimaPosicion = 0;
int numero;
/* ORDENACIÓN */
for(int i=0; i<a.length; i++){
System.out.println("Introduce un número");
numero = leer.nextInt();
if(numero != 0){
a[ultimaPosicion] = numero;
ultimaPosicion++;
}
}
/* COMPROBAR QUE EL ARRAY ESTÁ ORDENADO */
for(int j = 0; j < a.length; j++){
System.out.print(a[j] + " ");
}
}
Таким образом, ты можешь уберегаться mГ©todo Упорядочивать и делать распоряжение прямо во вводе данных.
Для ввода:
0 2 0 5 4
TendrГ-Схвати вывод:
2 5 4 0 0
Ты должен использовать public static <T> void sort(T[] a, Comparator<? super T> c)
и создавать comparador, который делал бы то, что ты хочешь. Одна implementaciГіn serГ - в эту:
int[] array = new int[]{2,3,0,1,0};
Array array2 = new Array<Integer>();
for(int i : array){
array2.add(i);
}
array2.sort(new Comparator(){
@Override
public int compare(Object o1, Object o2) {
return ((Integer)o1 == 0)?1:-1;
}
});
System.out.println(array2);
Вывод:
[1, 3, 2, 0, 0]
SegГєn она situaciГіn, который ты выдвигаешь, договоренность ты нуждаешься в том, чтобы упорядочить это despuГ©s, это leГ-do. А именно не tenГ-схватывай это спасенное заблаговременно, sГіlo ты знаешь Вашу длину. В этом случае ты можешь читать это подходящим способом и поддерживать линейную комплексность O (n) в твою функцию.
Scanner leer=new Scanner(System.in);
int a_len = 10, j = 0;
int[] a = new int[a_len]; // Inicialmente todos los valores son 0
for(i=0;i<a.length;i++){
System.out.print("ingrese posicion["+i+"]=");
a[j]=leer.nextInt(); // Lees en la última posición donde había un 0
// Ordenar
if(a[j] != 0)
++j;
// Ordenar
}
}//main