web-dev-qa-db-ja.com

整数を低いものから高いものの順にソートするjava

これらの数値は同じ整数変数に格納されます。整数を低いものから高いものの順に並べ替えるにはどうすればよいですか?

11367 
 11358 
 11421 
 11530 
 11491 
 11218 
 11789
4
user983246

実際には、2つのオプションがあります。

  1. 標準のコレクションを使用します Shakedownで説明されています
  2. Arrays.sort を使用します

例えば。、

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

もちろん、それはあなたがすでにあなたの整数を配列として持っていることを前提としています。それらを最初に解析する必要がある場合は、 String.split および Integer.parseInt を探します。

15
alf

それらをリストに入れてから、次のように自然順序付けを使用して並べ替えることができます。

_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
_
5
Nate W.

さて、あなたがアルゴリズムを使ってそれをしたいのなら。そこにはたくさんのソートアルゴリズムがあります。あなたが効率についてあまり心配しておらず、読みやすさと理解しやすさについてもっと心配しているのなら。挿入ソートをお勧めします。これが疑似コードです。これを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;
3
Suraj Kulkarni

狭い範囲の整数をソートするには、 Counting sort を試してください。これは、O(range + n)の複雑さを持ちます。ここで、nはソートされるアイテムの数です。離散的ではないものをソートしたい場合は、最適なn * log(n)アルゴリズムを使用してください( quicksortheapsortmergesort )。マージソートは、他の応答ですでに言及されているメソッドでも使用されますArrays.sort。ある種のアルゴリズムや関数呼び出しを推奨する簡単な方法はありません。ある種を使用するが、他の種類は使用しない特殊なケースが数十あるためです。

したがって、アプリケーションの正確な目的(何かを学ぶため(挿入ソートまたはバブルソートから始める)、整数の有効性(カウントソートを使用)、構造の有効性と再利用性(n * log(n)アルゴリズムを使用)を指定してください) 、またはzouは、なんらかの方法で並べ替えたいだけです-Arrays.sortを使用してください:-))。整数の文字列表現をソートしたい場合は、uが基数ソートに関心があるかもしれません..。

2
malejpavouk
import Java.util.Arrays;

public class sortNumber {

public static void main(String[] args) {
    // Our array contains 13 elements 
    int[] array = {9,  238,  248,  138,  118,  45,  180,  212,  103,  230,  104,  41,  49}; 

    Arrays.sort(array); 

    System.out.printf(" The result : %s", Arrays.toString(array)); 
  }
}
1
Kamal Hurnala

ユーザーと挿入ソートから入力を取得します。仕組みは次のとおりです。

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

}
0
Deepak Manktala

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