簡體   English   中英

按順序從最低到最高的java排序整數

[英]sorting integers in order lowest to highest java

這些數字存儲在同一個整數變量中。 我將如何從最低到最高的順序對整數進行排序?

11367
11358
11421
11530
11491
11218
11789

有兩種選擇,真的:

  1. 使用標准集合, 如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

您可以將它們放入列表中,然后使用它們的自然順序對它們進行排序,如下所示:

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

好吧,如果你想用算法來做。 那里有很多排序算法。 如果你不太關心效率,更多關注可讀性和可理解性。 我推薦插入排序。 這是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;

對於整數范圍較窄的整數,請嘗試計數排序 ,其復雜度為O(range + n) ,其中n是要排序的項目數。 如果你想的東西不是離散使用最佳的n * log(n)的算法(排序快速排序堆排序歸並 )。 合並排序也用於其他響應Arrays.sort已經提到的方法中。 沒有簡單的方法如何推薦一些算法或函數調用,因為有幾十種特殊情況,你會使用某種排序,而不是另一種。

所以請說明你的應用程序的確切目的(學習一些東西(好的 - 從插入排序或冒泡排序開始),整數的有效性(使用計數排序),結構的有效性和可重用性(使用n * log(n)算法) ,或者只是想讓它以某種方式排序 - 使用Arrays.sort :-))。 如果你想對整數的字符串表示進行排序,那么你可能會對基數排序感興趣....

如果array.sort沒有你想要的東西你可以試試這個:

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());
        }
    }
}

從用戶輸入輸入和插入排序。 下面是它的工作原理:

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);
    }
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM