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;
}
}
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;
}
arr = new int[Item];
Arrays.sort(arr);
Fonction intégrée à Java pour trier un tableau par ordre croissant.
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;
}
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;
}
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]