我在选择排序方面做错了什么。继续向我提供有关该类型的问题

时间:2011-06-24 17:45:00

标签: java

import java.util.Scanner;
import java.io.*;

public class SortingforFun {
    static final String IN_FILE = "sorting.txt";
    static final int ARRAY_SIZE = 20000;

    public static void  main(String[] arg) {

        long[] arr1= new long [ARRAY_SIZE];


        long[] arr2 = (long[])arr1.clone();



        long startTime = System.startHere();



        int i;

        System.out.println("\n\n RoseIndia\n\n");
        System.out.println(" Selection Sort\n\n");
        System.out.println("Values Before the sort:\n");
        for(i = 0; i < arr1.length; i++)
        System.out.print( arr1[i]+"  ");
        System.out.println();
        selection_srt(ARRAY_SIZE, arr1.length);
        System.out.print("Values after the sort:\n");
        for(i = 0; i < arr1.length; i++)
        System.out.print(arr1[i]+"  ");
        System.out.println();
        System.out.println("PAUSE");
    }

    public static void selection_srt(long ARRAY_SIZE , long n){
        for(long x=0; x<n; x++){
            long index_of_min = x;
            for(long y=x; y<n; y++){
                if(ARRAY_SIZE[(index_of_min]< ARRAY_SIZE[y]){
                    index_of_min = y;
                }
            }
            long temp = ARRAY_SIZE[x];
            ARRAY_SIZE[x] = ARRAY_SIZE[index_of_min];
            ARRAY_SIZE[index_of_min] = temp;
        }
    }
}

2 个答案:

答案 0 :(得分:3)

selection_sort方法中,您将获得类型为ARRAY_SIZE的参数long,并尝试将其用作数组。我认为这是导致您引用类型警告的原因(尽管如果您显示了特定的错误消息会更清楚)。

我猜你希望那个方法有一个像:

这样的签名
public static void selection_srt( long[] array, long n )

并在您拨打电话时传递arr1arr2

您还没有将任何实际数据放入这些数组中,尽管这不会导致错误。所有元素都会自动初始化为0,因此对它们进行排序不会很有趣。

答案 1 :(得分:0)

使用带有方括号ARRAY_SIZE的长[]就像它是一个数组一样,这已经是一个错误。我不认为你的代码编译

此外,您有一个名称阴影问题 - 参数ARRAY_SIZE(类型为long)正在使用相同的名称遮蔽静态成员,尽管类型为int。