所以,我在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;
}
}
老实说,我不知道从哪里开始。有什么帮助吗?