Selection Sort

Galera, to com um problema sobre o Selection Sort…
Achei um codigo na internet que funciona direito, so que com Int, e eu preciso como String… Alguem saberia como mudar ou ajudar?
Ai vai o codigo que eu tenho…

public class SelectionSort {
void selectionSort(int numbers[], int array_size)
{
	  int i, j;
	  int min, temp;

	  for (i = 0; i < array_size-1; i++)
	  {
	    min = i;
	    for (j = i+1; j < array_size; j++)
	    {
	      if (numbers[j] < numbers[min])
	        min = j;
	    }
	    temp = numbers[i];
	    numbers[i] = numbers[min];
	    numbers[min] = temp;
	  }
	}
}

Olá lucasbrito,

Pra comparar Strings (e também int, double…) você pode generalizar o seu método mudando o seu cabeçalho e algumas linhas do seu código:

void selectionSort(Comparable[] elementos) {

No lugar da antiga variável array_size, você pode obter o mesmo valor fazendo:

elementos.length

E na hora da comparação mesmo, você compara assim:

if (elementos[j].compareTo(elementos[min]) < 0) {

Eu não verifiquei se o seu algoritmo está correto, apenas tô ajudando em como fazer com que ele ordene também objetos de outros tipos, inclusive os tipos primitivos (se você estiver usando pelo menos o Java 5).

Até mais, :wink:

Achei outro codigo e ele ta funcionando normal, so que com inteiros, alguem sabe como posso modifica-lo para funcionar com Strings??
Esse é o codigo…

public class SelectionSort {
  private long[] a;

  private int nElems;

  public SelectionSort(int max) {
    a = new long[max];
    nElems = 0;
  }

  public void insert(long value) {
    a[nElems] = value;
    nElems++;
  }

  public void display() {
    for (int j = 0; j < nElems; j++)
      System.out.print(a[j] + " ");
    System.out.println("");
  }

  public void selectionSort() {
    int out, in, min;

    for (out = 0; out < nElems - 1; out++) // outer loop
    {
      min = out; // minimum
      for (in = out + 1; in < nElems; in++)
        // inner loop
        if (a[in] < a[min]) // if min greater,
          min = in; // a new min
      swap(out, min); // swap them
    }
  }

  private void swap(int one, int two) {
    long temp = a[one];
    a[one] = a[two];
    a[two] = temp;
  }

  public static void main(String[] args) {
    int maxSize = 100;
    SelectionSort arr; // reference to array
    arr = new SelectionSort(maxSize); // create the array

    arr.insert(17); // insert 10 items
    arr.insert(29);
    arr.insert(34);
    arr.insert(45);
    arr.insert(52);
    arr.insert(68);
    arr.insert(71);
    arr.insert(80);
    arr.insert(96);
    arr.insert(33);

    arr.display();

    arr.selectionSort();

    arr.display();
  }

}