1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Particionamento

Boa noite,

O código abaixo deveria mostrar um vetor com um pivô em que os elementos a sua esquerda são menores e os da direita dele maiores, porém sem ordená-lo em ordem crescente. O output deveria ser o vetor [10 20 30 50 40 60]. Alguém sabe o que pode estar incorreto?

public class Programa1 {

    private int array[];
    private int length;

    public void sort(int[] inputArr) {

        if (inputArr == null || inputArr.length == 0) {
            return;
        }
        this.array = inputArr;
        length = inputArr.length;
        quickSort(0, length - 1);
    }

    private void quickSort(int elementoEsquerda, int elementoDireita) {

        int i = elementoEsquerda;
        int j = elementoDireita;
        int pivo = array[(elementoDireita+elementoEsquerda)/2];
        while (i < j) {
            while (array[i] < pivo) {
                i++;
            }
            while (array[j] > pivo) {
                j--;
            }
            if (i <= j) {
                trocaNumeros(i, j);
                i++;
                j--;
            }
        }
        if (elementoEsquerda < j)
            quickSort(elementoEsquerda, j);
        if (i < elementoDireita)
            quickSort(i, elementoDireita);
    }

    private void trocaNumeros(int i, int j) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    public static void main(String a[]){

        Programa1 sorter = new Programa1();
        int[] input = {30,20,50,10,40,60};
        sorter.sort(input);
        for(int i:input){
            System.out.print(i);
            System.out.print(" ");
        }
    }
}
  • Não entendi o que você quer, ordenar ou não ordenar... o quicksort é um tipo de ordenação.

    Marcelo Vasconcelos   05 de mai de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags algoritmos ou faça a sua própria pergunta.