简体   繁体   English

按升序排序Java中的整数数组

[英]Sorting in ascending order an array of integers in Java

How do I put in ascending order an array of integers in Java? 如何在Java中按升序排列整数数组? I have class and Pilha.java Ordenacao.Java, but the program is not working. 我有课和Pilha.java Ordenacao.Java,但该程序无效。

Pilha.java Pilha.java

package lista03Pilhas;

public class Pilha {

    // indica qual o tamanho maximo da pilha (tamanho maximo do vetor)
    private int tamanhoMaximo;
    // indica o topo da pilha (quantidade de itens do vetor)
    private int topo;
    // cria o vetor que ira implementar a pilha
    private Object[] vetorPilha;
    // construtor que recebe como parametro o tamanho da pilha (tamanho do vetor)

    public Pilha(int length) {
        // indica o tamanho da pilha (vetor)
        tamanhoMaximo = length;
        // instancia o vetor com o tamanho informado
        vetorPilha = new Object[length];
        // faz com que o apontador do topo indique que não há elementos na pilha
        topo = -1;
    }

    // funcao que insere um objeto no topo da pilha
    public void push(Object obj) {
        // incrementa o topo (desloca para cima)
        topo++;
        // coloca o novo objeto na pilha
        vetorPilha[topo] = obj;
    }

    // funcao que remove um objeto do topo da pilha
    public Object pop() {

        // verifica se a pilha esta vazia
        if (topo < 0) {
            return null;
        } else {

            // obtem o objeto do topo da pilha
            Object auxiliar = vetorPilha[topo];

            // decrementa o topo (desce um item na pilha)
            topo--;

            // retorna o elemento do topo da pilha
            return auxiliar;
        }
    }

    // funcao que verifica quem esta no topo da pilha
    public Object top() {

        // verifica se a pilha esta vazia
        if (topo < 0) {
            return null;
        } else {
            return vetorPilha[topo];
        }
    }

    // verifica se a pilha esta vazia
    public boolean isEmpty() {

        // verifica se o topo aponta para algum indice valido do vetor
        if (topo == -1) {
            return true;
        } else {
            return false;
        }
    }

    // verifica se a pilha esta cheia
    public boolean isFull() {

        // verifica se o topo aponta para o ultimo elemento do vetor
        if (topo == tamanhoMaximo - 1) {
            return true;
        } else {
            return false;
        }
    }
}

Ordenacao.java Ordenacao.java

package lista03Pilhas;

public class Ordenacao {

    public static int[] ordenarDecrescente(int v[]) {
        Pilha minhaPilha = new Pilha(v.length);
        recebePilha(minhaPilha);
        int vetor[] = new int[v.length];
        for (int i = 0; i < v.length; i++) {
            vetor[i] = v[i];
            minhaPilha.push(vetor[i]);

        }
        int u = ((Integer) minhaPilha.pop()).intValue();
        return vetor;
    }

    public static void recebePilha(Pilha pilha){

    }
}

Main.java Main.java

package lista03Pilhas;

import java.util.Arrays;
import java.util.Scanner;

public class Lista03Pilhas {

    public static void main(String[] args) {
        int v[] = new int[]{100, 20, 15, 9, 8, 7, 1};
        System.out.println("Vetor:" + Arrays.toString(Ordenacao.ordenarDecrescente(v)));

        int p;
        int m;

        Scanner ent = new Scanner(System.in);
        int[] ordenarDecrescente = Ordenacao.ordenarDecrescente(v);
        Pilha minhaPilha = new Pilha(v.length);
        for (int i = 0; i < v.length; i++) {
            minhaPilha.push(v[i]);
            Object menor = minhaPilha.pop();
            System.out.print(minhaPilha.pop());
        }
        System.out.println("");
        for (int i = 0; i < v.length; i++) {
            System.out.print(v[i] + " ");
        }

    }
}

How do I put in ascending order an array of integers in Java? 如何在Java中按升序排列整数数组?

By using Arrays.sort() : 通过使用Arrays.sort()

int[] arr = ...;
Arrays.sort(arr);

Well, you can always use Arrays.sort() with an appropriate Comparator . 好吧,你总是可以使用适当的Comparator使用Arrays.sort() The default comparator works in ascending order, so it's just a matter of using this method. 默认比较器按升序运行,因此只需使用方法即可。

Java使用快速排序来对基本类型进行排序,并使用合并排序来排序对象,我认为使用Arrays.sort()对数组进行排序是很好的。

我想你正在寻找类似泡泡算法的东西......

您可以简单地使用java.lang类的“Array.sort()”方法。

You can use Arrays.sort(int[] a) . 您可以使用Arrays.sort(int [] a)

In Java 6 the sorting algorithm used for this method is a 在Java 6中,用于此方法的排序算法是a
Tuned quicksort , adapted from Jon L. Bentley and M. Douglas McIlroy's "Engineering a Sort Function", Software-Practice and Experience, Vol. 调整快速排序 ,改编自Jon L. Bentley和M. Douglas McIlroy的“工程排序功能”,软件实践和经验,卷。 23(11) P. 1249-1265 (November 1993). 23(11)P。1249-1265(1993年11月)。

In Java 7 and 8, the sorting algorithm used for this method is a 在Java 7和8中,用于此方法的排序算法是a
Dual-Pivot Quicksort by Vladimir Yaroslavskiy, Jon Bentley, and Joshua Bloch. 由Vladimir Yaroslavskiy,Jon Bentley和Joshua Bloch组成的Dual-Pivot Quicksort

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM