2016-05-03 16 views
1

数値をソートする方法を理解するのに助けが必要です。 以下は私がこれまでに思いついたものであり、うまくいかないものです。間違いを指摘して何をすべきか教えてください。昇順で整数をソートする - Java

java.util.Arraysを使用している皆さんを見ました。その機能を私に説明できますか?

import static java.lang.System.*; 
import java.util.*; 

    public class Lab07v2_Task10{ 
    public static void main (String[] args){ 
      Scanner orcho = new Scanner (in); 
      int quantity = 5; 
      int[] myArray = new int [quantity]; 
      out.println("Please enter 5 numbers"); 

      for(int count = 0; count<myArray.length; count++){ 
       myArray[count] = orcho.nextInt(); 
      } 

      int maxSoFar = myArray[0]; 

      for(int count = myArray.length-1; count>=0; count--){ 
       if(myArray[count] > maxSoFar){ 
       maxSoFar = myArray[count]; 
      } 
      out.println(maxSoFar); 
     } 
    } 
} 
+2

あなたは 'Arrays.sort'を使うことができます... – Mena

+1

@Menaのようなものですが、' Arrays.sort'を使っても手で数字を並べ替えることができます。 – Maljam

+1

@Maljamはなぜそれはコメントではなく、答えである。 OPの人生をもっと楽にしようとしています。 'Arrays'と' Collections'メソッドは高度に最適化されていることが知られています。自分のアルゴリズムを実装することは、学習しても意味がないかもしれません。あなたは代わりにソースからコピーすることができます。 – Mena

答えて

1

java.util.Arrays.sort(int[])方法は、数値の昇順にintの指定された配列をソート。

// sorting array 
    java.util.Arrays.sort(myArray); 

    // let us print all the elements available in list 
    System.out.println("The sorted int array is:"); 
    for (int number : myArray) { 
    System.out.println("Number = " + number); 
    } 
    } 

Arrays.sortjava.utilパッケージで使用可能なユーティリティメソッドである方法である。これを試してみてください。

ここでArraysは、システム定義のユーティリティクラスであり、sort(int[])を含むユーティリティクラスは、引数としてint[](配列)をとり、この配列をソートした後、配列を再割り当てします。より深い情報HereまたはOfficial Java Docs

2

ませんソリューションについては

。 アイデアはいくつかのステップを踏んでforループを実行することです。あなたが真ん中にいると仮定してください。最初の部分は既にソートされており、残りは完了しています。

次に、すでにソートされているものに対して現在の要素を処理します。

int maxSoFar = myArray[0]; 
for (int i = 1; i < myArray.length; i++) { 
    // The array 0, ..., i-1 is sorted 
    if (myArray[i] >= maxSoFar) { 
     // Still sorted 
     maxSoFar = myArray[i]; 
    } else { 
     // myArray[i] must be shifted left 
     ... 
    } 
    // Now the array 0, ..., i is sorted 
} 

これは一般的なトリックです。既に行われていることを前提とし、1つの小さなステップに取り組み、続行します。

0

あなたのプログラムは今すぐ実行されます:5つの数字が印刷され、印刷される数字はその繰り返しで見つかった最高の数字です。

あなたが動作させる方法:5つの数字を最低から最高まで並べ替えます。次に、これらの5つの番号を印刷します。これはプログラム内のバブルソートの実装です。

for(int i = 0; i< myArray.length; i++){ 
     for(int j = 0; j < myArray.length-1; j++){ 
      if(myArray[j] > myArray[j+1]){ //if the current number is less than the one next to it 
       int temp = myArray[j]; //save the current number 
       myArray[j] = myArray[j+1]; //put the one next to it in its spot 
       myArray[j+1] = temp; //put the current number in the next spot 
      } 
     } 
    } 

これはおそらく理解しやすい種類です。基本的に、あなたの配列の長さと同じくらい何回でも、数字の上に櫛をかけて、できるだけ遠くまで次に高い数字を持ってきてください。

ソートが完了したら、番号を印刷できます。

+0

ありがとう! tempを使用すると役立ちます! –

関連する問題