2016-04-11 7 views
0

最高値、最低値、平均値を出力する方法があり、ソート方法が必要です。私は "バブルメソッド"と呼ばれるものを置こうとしましたが、うまくいかないのです。誰でも私が使用できる他のソート方法を知っていますか?スキャナクラスを使用したユーザー入力でソート方法が必要

import java.util.Scanner; 

public class Arrayassignment { 

    public static void main(String[] args) { 
     Scanner sin = new Scanner(System.in); 

     System.out.println("Enter an intiger for array size."); 

     int number = sin.nextInt(); 

     int array[] = new int[number]; 

     System.out.println("Array size " + number + " initiated.\n"); 

     System.out.println("Now enter the array intigers."); 
     for (int i = 0; i < number; i++) { 
      array[i] = sin.nextInt(); 

     } 

     //System.out.println ("\nLargest " + max (1, 3, 5)); 
     System.out.println("sorting" + sort(array)); 
     System.out.println("The highest number in the array is " + max(array)); 
     System.out.println("The smallest number in the array is " + min(array)); 
     System.out.println("The average of the numbers in the array is " + avg(array)); 
    } 

    public static int sort(int[] arg) { 

     for (int i = 1; i < arg.length - 1; i++) { 
      for (int j = i + 1; j < arg.length; j++) { 

       if (arg[i] > arg[j]) { 
        int arrange = arg[i]; 

        arg[i] = arg[j]; 
        arg[j] = arrange; 

       } 
      } 
     } 
     return arrange; 
    } 

    public static int max(int[] arg) { 
     if (arg.length == 0) { 
      System.out.println(" empty arguement list "); 
      return 0; 
     } 
     int largest = arg[0]; 
     for (int i = 1; i < arg.length; i++) { 
      if (arg[i] > largest) { 
       largest = arg[i]; 
      } 
     } 
     return largest; 
    } 

    public static int min(int[] arg) { 
     if (arg.length == 0) { 
      System.out.println(" empty arguement list "); 
      return 0; 
     } 
     int smallest = arg[0]; 
     for (int i = 1; i < arg.length; i++) { 
      if (arg[i] < smallest) { 
       smallest = arg[i]; 
      } 
     } 
     return smallest; 
    } 

    public static double avg(int... arr) { 
     int sum = 0; 
     for (int i = 0; i < arr.length; i++) { 
      sum += arr[i]; 
     } 
     double average = (double) sum/arr.length; 
     return average; 
    } 
} 
+0

コードをインデントし、コードを適切に書式設定してください。 – robotlos

答えて

0

他にも多くの並べ替え方法があります。使用しようとしていたものは「バブルソート」と呼ばれ、多少注文されていない限り、大きなデータセットでは非常に高価です。あなたが達成しようとしているものに対して、選択ソートや挿入ソートの使用をお勧めします。ここで

は、あなたが実装することができ、多くのソートアルゴリズムへのリンクです: Helpful animations

0
:ここ Sorting Algorithms

は、これらの種類のプロセスを示すいくつかのアニメーション(非常にあなたのアルゴリズムを実装する前に、これらを見てお勧めします)です

お客様のご要望に応じて、任意のソート方法をご利用いただけます。配列をソートした後、配列の最初の要素と最後の要素のソートされた配列から最小値と最大値を簡単に取り出すことができます。

平均を計算するには、使用した方法とは別の方法を使用するか、静的変数を使用してソート方法内の合計を計算することができます。

このコードを参照してください。

public class Arrayassignment { 
    public static void main(String[] args) { 
     Scanner sin = new Scanner(System.in); 
     System.out.println("Enter an intiger for array size."); 

     int number = sin.nextInt(); 

     int array[] = new int[number]; 

     System.out.println("Array size " + number + " initiated.\n"); 

     System.out.println("Now enter the array intigers."); 
     for (int i = 0; i < number; i++) { 
      array[i] = sin.nextInt(); 
     } 

     sin.close(); 

     System.out.println("sorting"); 
     printArray(array); //Before sort 
     sort(array); 
     printArray(array); //After sort 
     System.out.println("The highest number in the array is " + array[array.length - 1]); 
     System.out.println("The smallest number in the array is " + array[0]); 
     System.out.println("The average of the numbers in the array is " + avg(array)); 
    } 

    public static void sort(int[] arg) { 
     int arrange; 
     for (int i = 0; i < arg.length - 1; i++) 
      for (int j = i + 1; j < arg.length; j++) { 

       if (arg[i] > arg[j]) { 
        arrange = arg[i]; 
        arg[i] = arg[j]; 
        arg[j] = arrange; 
       } 
      } 
    } 

    public static double avg(int... arr) { 
     int sum = 0; 
     for (int i = 0; i < arr.length; i++) { 
      sum += arr[i]; 
     } 
     double average = (double) sum/arr.length; 
     return average; 
    } 

    public static void printArray(int[] arr) { 
     for (int value : arr) { 
     // print elements according to your convenient 
     System.out.println(value); 
    } 
} 

配列を通過する配列を印刷するには上記のコード方法を参照してください。

+0

ソートされた配列をどのように表示することができるかについての主な問題はまだ分かりません。 – sjames14

+0

- 配列を印刷する - 配列をソートする - 配列をもう一度印刷する – sjames14

+0

配列を印刷する場所を呼び出す方法を追加しました。 –

関連する問題