-4

当我尝试调用我的冒泡排序类时出现了一些错误。但我找不到它。这是我的冒泡排序课程,应该没问题:

public static void Sort2(double[] yourNumbers) {
        double swap; 
        for(int i = 0; i < yourNumbers.length-1; i++){
            for(int d = 0; d < yourNumbers.length-1; d++){
                if(yourNumbers[d] > yourNumbers[d+1]){ 
                    //swap feature
                    swap = yourNumbers[d];
                    yourNumbers[d] = yourNumbers[d+1];
                    yourNumbers[d+1] = swap;

                }
            }
        }
    }

这是我的主要方法(在​​这里,当我调用该Sort2方法时出现错误:

sort.java 类型中的方法 Sort2(double[]) 不适用于参数 (int)

        System.out.println("Size");
        int yourNumbers = scan.nextInt();
        double[] array = new double[yourNumbers];

        System.out.println("Numbers");

        for(int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            array[i] = scan.nextDouble();

        }
            Sort2(array);

我知道这里被问了很多次,但我觉得我做错了。请问你能帮我吗?PS:我不允许使用ArrayList.

编辑:这是我现在使用的代码。仍然无法工作:编辑 2:在这个http://www.leepoint.net/notes-java/data/arrays/70sorting.html的帮助下,我明白了。一条线解决一切

import java.util.Scanner;

public class Bublesort{

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

        System.out.println("Size");
        int yourNumbers = scan.nextInt();
        double[] array = new double[yourNumbers];

        System.out.println("Numbers");

        for(int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            array[i] = scan.nextDouble();
         }

       Sort2(array);
    **System.out.println(Arrays.toString(array));** 

    }
    public static void Sort2(double[] yourNumbers) {
        double swap; 
         for(int i = 0; i < yourNumbers.length - 1; i++){
                for(int d = i + 1; d < yourNumbers.length; d++){
                    if(yourNumbers[i] > yourNumbers[d]){ 
                        //swap feature
                        swap = yourNumbers[i];
                        yourNumbers[i] = yourNumbers[d];
                        yourNumbers[d] = swap;

                    }
                }
            }

    }}
4

3 回答 3

0

该错误表明您不能将 an 传递int给接受double[]argument.

   System.out.println("Size");
        int yourNumbers = scan.nextInt();
        double[] array = new double[yourNumbers];

        System.out.println("Numbers");

        for(int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
            array[i] = scan.nextDouble();
         }

       sort2(array);//**should work fine**
于 2012-10-30T20:59:38.650 回答
0

为了使用ArrayList,您必须导入java.util.ArrayList;您收到错误,因为您将整数传递给您的 Sort2() 函数。您需要向它传递一个双精度数组。此外,您的 sort2 函数将对数组进行排序,但您将无法引用它,因为 java 按值传递参数..您应该拥有您的函数double[] sort2(double[] array),然后返回排序后的数组。

于 2012-10-30T21:02:03.597 回答
0

排序例程的更好版本应该类似于:N*(n-1) / 2 次迭代 vs n^2

         for(int i = 0; i < yourNumbers.length - 1; i++){
            for(int d = i + 1; d < yourNumbers.length; d++){
                if(yourNumbers[i] > yourNumbers[d]){ 
                    //swap feature
                    swap = yourNumbers[i];
                    yourNumbers[i] = yourNumbers[d];
                    yourNumbers[d] = swap;

                }
            }
        }
于 2012-10-30T21:07:22.967 回答