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;
}
}
}
答案 0 :(得分:3)
在selection_sort
方法中,您将获得类型为ARRAY_SIZE
的参数long
,并尝试将其用作数组。我认为这是导致您引用类型警告的原因(尽管如果您显示了特定的错误消息会更清楚)。
我猜你希望那个方法有一个像:
这样的签名public static void selection_srt( long[] array, long n )
并在您拨打电话时传递arr1
或arr2
。
您还没有将任何实际数据放入这些数组中,尽管这不会导致错误。所有元素都会自动初始化为0,因此对它们进行排序不会很有趣。
答案 1 :(得分:0)
使用带有方括号ARRAY_SIZE
的长[]
就像它是一个数组一样,这已经是一个错误。我不认为你的代码编译
此外,您有一个名称阴影问题 - 参数ARRAY_SIZE(类型为long)正在使用相同的名称遮蔽静态成员,尽管类型为int。