ordinamento degli interi in ordine dal più basso al più alto java

Questi numeri sono memorizzati nella stessa variabile intera. Come dovrei fare per ordinare gli interi in ordine dal più basso al più alto?

  11367
 11358
 11421
 11530
 11491
 11218
 11789 

Ci sono due opzioni, in realtà:

  1. Utilizza le raccolte standard, come spiegato da Shakedown
  2. Usa Arrays.sort

Per esempio,

 int[] ints = {11367, 11358, 11421, 11530, 11491, 11218, 11789}; Arrays.sort(ints); System.out.println(Arrays.asList(ints)); 

Questo ovviamente presuppone che tu abbia già i tuoi numeri interi come array. Se è necessario analizzarli per primi, cercare String.split e Integer.parseInt .

Puoi metterli in una lista e poi ordinarli usando il loro ordinamento naturale, in questo modo:

 final List list = Arrays.asList(11367, 11358, 11421, 11530, 11491, 11218, 11789); Collections.sort( list ); // Use the sorted list 

Se i numeri sono memorizzati nella stessa variabile, dovrai in qualche modo metterli in una List e poi chiamare sort , in questo modo:

 final List list = new ArrayList(); list.add( myVariable ); // Change myVariable to another number... list.add( myVariable ); // etc... Collections.sort( list ); // Use the sorted list 
  • Collections.sort( List )

Bene, se vuoi farlo usando un algoritmo. Ci sono una miriade di algoritmi di ordinamento là fuori. Se non ti preoccupi troppo dell’efficienza e più della leggibilità e della comprensibilità. Raccomando Insertion Sort. Ecco il codice psudo, è banale tradurre questo in java.

 begin for i := 1 to length(A)-1 do begin value := A[i]; j := i - 1; done := false; repeat { To sort in descending order simply reverse the operator ie A[j] < value } if A[j] > value then begin A[j + 1] := A[j]; j := j - 1; if j < 0 then done := true; end else done := true; until done; A[j + 1] := value; end; end; 

Per ordinare un ristretto intervallo di numeri interi, provare a ordinare il conteggio , che ha una complessità di O(range + n) , dove n è il numero di elementi da ordinare. Se si desidera ordinare qualcosa non discreto, utilizzare algoritmi di n * log (n) ottimali ( quicksort , heapsort , mergesort ). Unisci sort viene anche utilizzato in un metodo già menzionato da altre risposte Arrays.sort . Non esiste un modo semplice per raccomandare alcune chiamate ad algoritmi o funzioni, perché ci sono dozzine di casi speciali, in cui dovresti usare qualche tipo, ma non l’altro.

Quindi, per favore, specifica lo scopo esatto della tua applicazione (per imparare qualcosa (beh – inizia con l’ordinamento di inserimento o il bubble sort), l’effettività per i numeri interi (usa il conteggio delle ordinazioni), l’efficacia e la riusabilità per le strutture (usa algoritmi n * log (n)) o vuoi solo che sia in qualche modo ordinato – usa Arrays.sort :-)). Se desideri ordinare le rappresentazioni di stringa di interi, potresti doverle interrompere in radix sort ….

se array.sort non ha ciò che stai cercando puoi provare questo:

 package drawFramePackage; import java.awt.geom.AffineTransform; import java.util.ArrayList; import java.util.ListIterator; import java.util.Random; public class QuicksortAlgorithm { ArrayList affs; ListIterator li; Integer count, count2; /** * @param args */ public static void main(String[] args) { new QuicksortAlgorithm(); } public QuicksortAlgorithm(){ count = new Integer(0); count2 = new Integer(1); affs = new ArrayList(); for (int i = 0; i <= 128; i++){ affs.add(new AffineTransform(1, 0, 0, 1, new Random().nextInt(1024), 0)); } affs = arrangeNumbers(affs); printNumbers(); } public ArrayList arrangeNumbers(ArrayList list){ while (list.size() > 1 && count != list.size() - 1){ if (list.get(count2).getTranslateX() > list.get(count).getTranslateX()){ list.add(count, list.get(count2)); list.remove(count2 + 1); } if (count2 == list.size() - 1){ count++; count2 = count + 1; } else{ count2++; } } return list; } public void printNumbers(){ li = affs.listIterator(); while (li.hasNext()){ System.out.println(li.next()); } } } 

Prendi gli input dall’utente e Ordina inserzione. Ecco come funziona:

 package com.learning.constructor; import java.util.Scanner; public class InsertionSortArray { public static void main(String[] args) { Scanner s=new Scanner(System.in); System.out.println("enter number of elements"); int n=s.nextInt(); int arr[]=new int[n]; System.out.println("enter elements"); for(int i=0;i -1) && ( array [i] > key ) ) { array [i+1] = array [i]; i--; } array[i+1] = key; printNumbers(array); } } }