随机整数和排序

时间:2014-11-15 19:03:43

标签: java arrays sorting

所以,我在AP计算机科学(在线课程),我们的老师给了我们这个任务: 创建一个名为SelectionSort的公共类,具有以下特征:

包含一个100,000个整数的私有实例变量。

包含一个私有实例变量,用于存储排序期间运行的语句数。

包含一个私有实例变量,用于存储搜索期间运行的语句数。

创建一个名为" sort"的公共mutator方法。将一个int数组作为参数,如果数组超过100,000个元素则抛出异常,否则使用Selection Sort算法将数组存储为排序列表,并计算需要按顺序执行的语句数对列表进行排序。

创建一个名为" linearSearch"的公共查询方法。将int作为值,使用线性搜索算法搜索它,并返回一个字符串,表示"执行[count]语句后未找到整数[int]"或"执行[count]语句"后,在位置[index]中找不到整数[int]。

创建一个名为" binarySearch"的公共查询方法。它与linearSearch的功能相同,但实现了二进制搜索算法。

创建一个名为" toString"的公共访问器方法。它会将排序列表作为字符串返回,并在每个元素之间添加换行符(\ n)。

创建一个名为" getSortCount"的公共访问器方法。这将返回为列表排序而执行的语句数。

创建第二个名为BubbleSort或InsertionSort的公共类,除了实现冒泡排序或插入排序算法外,具有相同的特性。

创建具有以下特征的主测试人员类:

提示用户输入1到100,000之间的数字来设置数组的大小

提示用户输入介于1和数组大小之间的整数搜索值以搜索

生成一个随机数的数组,其值介于1和数组的大小

之间

将随机数列表打印到屏幕

创建一个SelectionSort对象和一个BubbleSort或InsertionSort对象,并将它们传递给随机数组进行排序。

使用对象&#34; getSortCount&#34;访问器方法,在屏幕上打印两个语句,显示每行类型执行的语句数量&#34; [计数]语句执行[选择/冒泡/插入]排序&#34;。< / p>

使用linearSearch和binarySearch方法在每个对象中搜索搜索值。

在终端上打印4个语句,两个对象中的每一个上的每种类型的搜索都有两个:&#34; [线性/二进制]的结果在[Selection /]中搜索[搜索值]冒泡/插入]排序对象:[由linearSearch或binarySearch方法返回的结果]&#34;

您需要使用toString方法作为故障排除工具,缓慢且渐进地构建排序类和主测试器类,并从非常小的数组(大约10个元素)开始。一旦您确信您的程序运行正常,请尝试逐步增大和扩大阵列,并记下打印到终端的结果。

到目前为止,我已经进入了SelectionSort类。我坚持&#34;创建一个名为&#34; toString&#34;的公共访问器方法。这将把排序列表作为字符串返回,每个元素之间有一个换行符(\ n)。 创建一个名为&#34; getSortCount&#34;的公共访问器方法。这将返回为列表排序而执行的语句数。&#34;

到目前为止,这是我的代码:

import java.util.Scanner;


    public class SelectionSort{

    private int stateSort;
    private int stateSearch;
    int fin[] = new int [100000];
    int smallerNumber;
    private int j;
    private int i;
    public boolean Sort(int fin[]){
        if (! (0 <= fin[100000] || fin[100000]>100000)){
        return false;
}
        else{  
                for (int i = 0; i < fin.length - 1; i++) {
                         int index = i;                          
                             for (int j = i + 1; j < fin.length; j++){
                             if (fin[j] < fin[index])
                                 index = j;
                                 int smallerNumber = fin[index]; 
                                 fin[index] = fin[i];
                                 fin[i] = smallerNumber;    
                     }
                    }
    }
    return true;
}
public int getState(){
    return j;
}
int linearSearch (int[] a, int stateSearch){
    for (int i = 0; i <a.length; i++){
         if (a[i] < stateSearch || a[i] > stateSearch){
        System.out.println("The integer" + stateSearch + "was not found after" + a.length +"statements.");
    }
    if(a[i] == stateSearch){
    System.out.println("The integer" + stateSearch + "was found after" + a.length + "statements.");
    return i;
}
} 
return -1;
}
int binarySearch (int[] a, int stateSearch){
    int left = 0;
    int right = a.length - 1;
    while (left <= right){
        int midpoint = (left + right)/2;
        if (a[midpoint] == stateSearch){
        System.out.println("The integer" + stateSearch + "was found after" + a.length + "statements.");
        return midpoint;
    }
        else if (a[midpoint] < stateSearch){
        left = midpoint + 1;
    }
        else{
        right = midpoint - 1;
        System.out.println("The integer" + stateSearch + "was not found after" + a.length +"statements.");
    }
    }
    return -1;
}
public String toString(){
    return stateSearch;
}

}

老实说,我不知道从哪里开始。有什么帮助吗?

0 个答案:

没有答案