需要使用扫描程序类

时间:2016-04-11 21:03:57

标签: java arrays sorting

我有一个输出最高值,最低值,平均值的方法,我需要一个排序方法。我试图把所谓的"泡沫方法"但它没有成功。有人知道我可以使用的其他排序方法吗?

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

2 个答案:

答案 0 :(得分:0)

您可以使用许多其他排序方法。你试图使用的那个名为&#34;冒泡排序&#34;并且在大型数据集上非常昂贵,除非它们有些有序。我建议您使用选择排序或插入排序来完成您想要完成的任务。

以下是您可以实施的许多排序算法的链接:Sorting Algorithms

以下是一些显示这些排序过程的动画(强烈建议您在实现算法之前先查看这些内容): Helpful animations

答案 1 :(得分:0)

您可以根据自己的要求使用任何排序方法。对数组进行排序后,您可以轻松地从排序数组,第一个元素和数组的最后一个元素中获取最小值和最大值。

要计算平均值,您必须使用单独的方法,或者您可以使用静态变量来计算排序方法中的总计。

参考此代码。

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

要打印遍历数组的数组。见上面的代码方法。