web-dev-qa-db-fra.com

Trier les éléments d'un tableau par ordre croissant

J'essaie de trier un tableau dans l'ordre croissant. Pour une raison quelconque, il effectue la boucle for une seule fois. Pourquoi ne continue-t-il pas tant que tout n'est pas réglé?

C'est pour une affectation, donc je ne suis pas autorisé à utiliser les méthodes de tri existantes. Je suis censé écrire la méthode moi-même.

public class Sudoku {
    public static void main(String[] args) {
        int[] a = { 1, 4, 3, 5, 2 };
        System.out.println(Arrays.toString(sortArray(a)));
    }

    public static int[] sortArray(int[] nonSortedArray) {
        int[] sortedArray = new int[nonSortedArray.length];
        int temp;

        for (int i = 0; i < nonSortedArray.length - 1; i++) {
            if (nonSortedArray[i] > nonSortedArray[i + 1]) {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[i + 1];
                nonSortedArray[i + 1] = temp;
                sortedArray = nonSortedArray;
            }
        }

        return sortedArray;
    }
}
3
SM360
public static int[] sortArray(int[] nonSortedArray) {
        int[] sortedArray = new int[nonSortedArray.length];
        int temp;
        for (int j = 0; j < nonSortedArray.length - 1; j++) {// added this for loop, think about logic why do we have to add this to make it work

        for (int i = 0; i < nonSortedArray.length - 1; i++) {
            if (nonSortedArray[i] > nonSortedArray[i + 1]) {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[i + 1];
                nonSortedArray[i + 1] = temp;
                sortedArray = nonSortedArray;

            }
        }
        }
        return sortedArray;
    }

sortie: [1, 2, 3, 4, 5]

ou

//making use of j

public static int[] sortArray(int[] nonSortedArray){
    int[] sortedArray = new int[nonSortedArray.length];
    int temp;
    for (int i = 0; i <= nonSortedArray.length; i++) 
    {
        for (int j = i+1; j < nonSortedArray.length; j++)
        {
            if (nonSortedArray[i] > nonSortedArray[j]) 
            {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[j];
                nonSortedArray[j] = temp;
                sortedArray = nonSortedArray;
            }
        }
    }
    return sortedArray;
}
3
RamPrakash
 arr = new int[Item];
  Arrays.sort(arr);

Fonction intégrée à Java pour trier un tableau par ordre croissant.

1
Azmat Ullah

Vous essayez de trier un tableau en utilisant une seule boucle. Vous auriez besoin de deux boucles pour vous assurer que les éléments sont triés.

public static int[] sortArray(int[] nonSortedArray) 
{
    int[] sortedArray = new int[nonSortedArray.length];
    int temp;
    for (int i = 0; i < nonSortedArray.length-1; i++) 
    {
        for (int j = i+1; j < nonSortedArray.length; j++)
        {
            if (nonSortedArray[i] > nonSortedArray[j]) 
            {
                temp = nonSortedArray[i];
                nonSortedArray[i] = nonSortedArray[j];
                nonSortedArray[j] = temp;
                sortedArray = nonSortedArray;
            }
        }
    }
    return sortedArray;
}
0
Pavan

Tri du tableau en ordre croissant

private static int[] sort(int[] array) {
        int[] new_array = new int[array.length];
        int count=0;

        for (int i=0; i<array.length; i++) {
            for(int j=i+1; j<array.length+i;j++) {
                if(array[i]>=array[j%array.length])
                    count++;
            }

            for(int loc=count; loc>0;loc--) {
                if(new_array[loc]==0)
                {
                    new_array[loc]=array[i];
                    break;
                }
            }
            count=0;                            
        }

        return new_array;
    }
0
Valeriu Chirica

Cela va trier un tableau dans l'ordre croissant 

int arr[]={33,3,4,5,1};
Arrays.sort(arr);
System.out.println(Arrays.toString (arr));

la sortie va: - [1,3,4,5,33]

0
Vikash kumawat