SelectionSort

Olá, estou com dificuldades para fazer o método selectionSort funcionar, o código é de um servidor de e-mail, onde o email tem remetente, destinatário, assunto, corpo do e-mail e prioridade. O que eu preciso fazer é ordenar os e-mails por prioridade, o problema é que na primeira passada o método ordena o menor elemento na primeira posição, porém na segunda passada ele troca esse elemento por um de novo valor e jogar o de menor para a ultima posição e fica em looping fazendo essas duas trocas. Segue o código

public void selectionSort(Email[] e) {
        for (int i = 0; i < e.length - 1; i++) {
           int min = i;
            for (int j = i + 1; j < e.length; j++) {
                if (e[j] != null) { //verifica se o array não está vazio
                    if (e[min].getPrioridade() > e[j].getPrioridade()) { //compara o indice prioridade
                        min = j;
                        Email temp = e[i];
                        e[i] = e[min];
                        e[min] = temp;
                    }
                }
            }
        }

Tente:

public void selectionSort(Email[] e) {
    Arrays.sort(e, Comparator.comparing(Email::getPrioridade));
}