很抱歉,我在这里有一个重要的大脑放屁(猜猜这是几天的小睡觉让你)。如果不将任何内容更改为静态,我如何创建一个将运行它的main()。
package merger;
import java.util.Random;
public class another {
public int[] numbers;
private final static int size = 100;
private static int maxNumber = 30;
private final static int limit = 10;
public int number;
private boolean Insertion = false;
public void arraytosort(){
numbers = new int[size];
Random number = new Random();
for (int i=0; i< numbers.length; i++){
numbers[i] = number.nextInt(maxNumber);
}
test(numbers);
}
public void test(int[] array){
this.numbers = array;
number = array.length;
mergesort(0,number - 1);
}
public void mergesort(int low, int high){
if(Insertion || high-low < limit){
insertionsort(low, high);
return;
}
if (low<high){
int middle = (low+high) / 2;
mergesort(low, middle);
mergesort(middle +1, high);
merge(low,middle,high);
return;
}
}
public void merge(int low, int middle, int high){
int[] temp = new int[number];
for (int i=low;i<=high; i++){
temp[i] = numbers[i];
}
int i = low;
int j = middle+1;
int k = low;
while (i<=middle || j<=high){
if (temp[i] <= temp[j]){
numbers[k] = temp[i];
i++;
}
else{
temp[k] = temp[j];
j++;
}
k++;
}
while (i<=middle){
temp[k] = temp[i];
k++;
i++;
}
temp = null;
return;
}
public void insertionsort(int low, int high){
for(int i=low+1;i<=high;i++){
int t = numbers[i];
for(int j = i-1; j>=low; j--){
if(t>numbers[j]) break;
numbers[j+1] = numbers[j];
numbers[j+1] = t;
}
}
}
/**
* @param args
*/
public static void main(String[] args){
}
}
我只需要能够测试它,看看它是否有效。在我看来,它似乎应该有效。
由于
答案 0 :(得分:5)
如果不将任何内容更改为静态,我如何制作一个将运行此功能的main()。
您必须创建该类的实例:
public static void main(String[] args){
another instance = new another();
instance.whateverMethodYouLike();
}
顺便说一句,请遵循Java约定并使用大写首字母命名类。
答案 1 :(得分:2)
public static void main(String[] args)
{
another myObject = new another();
myObject.arraySort(); //will call test which will call mergesort
myObject.insertionSort(0,myObject.numbers.size()-1); //nothing calls insertion sort
}
请遵循代码约定,例如大写类名的第一个字母和方法/变量的camelCasing。
如果要查看已排序的输出,请在屏幕上打印数组。
公共变量是坏的,坏的,坏的,在你的情况下使它们成为私有的(如numbers[]
)......
在main方法中,您“创建”该类对象的实例,而不是直接调用方法。这是一种“特殊”方法,可以说与其他公共/私人/静态方法不同......
我建议阅读一些基本的java书,就像在java中思考一样,可以免费在线获取...