2011-10-16 40 views
4

這些數字存儲在相同的整數變量中。我會如何按照從低到高排列整數?按從低到高的順序排列整數java

11367 
11358 
11421 
11530 
11491 
11218 
11789
+2

將來,您可能會發現指定任何約束條件會更有用。例如,你是否可以使用提供的Java排序方法,或者如果你打算實現你自己的。這將幫助你得到更合適的答案,用更少的努力:) – obfuscation

+0

'這些數字存儲在同一個整型變量中 - 我期望Java int或Integer在任意給定點處都有一個值時間:如果您想要訂購價值,請使用「集合」或_array_。 – greybeard

回答

14

有兩種選擇,真正做到:

  1. 使用標準的集合,as explained by Shakedown
  2. 使用Arrays.sort

例如,

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

臨屋當然,假設你已經將整數作爲一個數組。 如果您需要首先解析這些文件,請查找String.splitInteger.parseInt

+0

僅供參考 - Oracle鏈接不起作用。他們要麼壞了,要麼需要一個Oracle帳戶才能查看,我不知道是哪一個。 – Kimbluey

+0

他們似乎已退休1.4.2 ...將更新,謝謝。 – alf

5

你可以把它們放入一個列表,然後使用他們的自然順序進行排序,像這樣:

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

如果號碼存儲在同一個變量,那麼你就必須以某種方式把它們放在一個List,然後調用sort,就像這樣:

final List<Integer> list = new ArrayList<Integer>(); 
list.add(myVariable); 
// Change myVariable to another number... 
list.add(myVariable); 
// etc... 

Collections.sort(list); 
// Use the sorted list 
+0

有沒有不同的方法來排序數字。我有人推薦我關於ArrayList,但我們必須排序一個for循環和一個if語句,因爲我從來沒有被教過ArrayList但 – user983246

3

那麼,如果你想使用算法來做到這一點。那裏有很多排序算法。如果你不太關心效率,更關心可讀性和可理解性。我推薦插入排序。這裏是psudo代碼,把它翻譯成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 i.e. 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; 
+0

代碼結構不是正確的。只要去這裏http://en.wikipedia.org/wiki/Insertion_sort –

2

對於整數範圍窄的整數嘗試Counting sort,其複雜度爲O(range + n),其中n是要排序的項目數。如果您想對不是離散使用最優的n * log(n)算法(quicksort,heapsort,mergesort)進行排序。合併排序也用於其他響應Arrays.sort已提及的方法。如何推薦一些算法或函數調用沒有簡單的方法,因爲有幾十種特殊情況,您可以使用某種類型,但不使用其他類型。所以請指定你的應用程序的確切目的(學習一些東西(從插入排序或冒泡排序開始),整數的有效性(使用計數排序),結構的有效性和可重用性(使用n * log( n)算法),或者只是希望它以某種方式排序 - 使用Arrays.sort :-))。如果你想,如果中的Array.sort沒有你想找的爲整數的字符串表示

0

排序,比ü可能在基數排序來interrested ....你可以試試這個:

package drawFramePackage; 
import java.awt.geom.AffineTransform; 
import java.util.ArrayList; 
import java.util.ListIterator; 
import java.util.Random; 
public class QuicksortAlgorithm { 
    ArrayList<AffineTransform> affs; 
    ListIterator<AffineTransform> 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<AffineTransform>(); 
     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<AffineTransform> arrangeNumbers(ArrayList<AffineTransform> 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()); 
     } 
    } 
} 
0

接受來自用戶和插入排序的輸入。以下是它的工作方式:

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<n;i++){//for reading array 
    arr[i]=s.nextInt(); 

} 

System.out.print("Your Array Is: "); 
//for(int i: arr){ //for printing array 
for (int i = 0; i < arr.length; i++){ 
    System.out.print(arr[i] + ","); 

} 
System.out.println("\n");   

    int[] input = arr; 
    insertionSort(input); 
} 

private static void printNumbers(int[] input) { 

    for (int i = 0; i < input.length; i++) { 
     System.out.print(input[i] + ", "); 
    } 
    System.out.println("\n"); 
} 

public static void insertionSort(int array[]) { 
    int n = array.length; 
    for (int j = 1; j < n; j++) { 
     int key = array[j]; 
     int i = j-1; 
     while ((i > -1) && (array [i] > key)) { 
      array [i+1] = array [i]; 
      i--; 
     } 
     array[i+1] = key; 
     printNumbers(array); 
    } 
} 

}