使用用户输入的冒泡排序=错误

时间:2012-10-30 20:56:41

标签: java bubble-sort

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

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 [])方法不适用   arguments(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

编辑:这是我现在使用的代码。 Stil不会工作: 编辑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;

                    }
                }
            }

    }}

3 个答案:

答案 0 :(得分:0)

错误表明您无法将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**

答案 1 :(得分:0)

为了使用ArrayList,您必须导入java.util.ArrayList;您将收到错误,因为您将整数传递给Sort2()函数。你需要传递一系列双打。另外,你的sort2函数会对数组进行排序,但你无法引用它,因为java通过值传递参数..你应该有你的函数double[] sort2(double[] array)然后返回已排序的数组。

答案 2 :(得分: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;

                }
            }
        }