Java 随机数排序方法的时间测试代码问题
最后,我为带有时间分析代码的排序方法编写了工作代码,但是当我将随机数生成器代码放在方法调用中而不是默认的赋值int[]list={9,1,8,2,7,3,6,4,5}时;我得到一个错误-类型不匹配:无法从ArrayList转换为int[]”。我尝试更改GeneratorDomainList以返回数组,但仍然得到相同的错误,然后我尝试将InsertSort类中的每个“数组”更改为“列表”,并且仍然在计时代码“类型不匹配:无法从ArrayList转换为int[]”中得到相同的错误,然后假设我必须在Random类中从arraylist更改为list,但是当我为Random类更改时,我得到错误“无法实例化类型list”。希望有人能告诉我我做错了什么,并帮助我解决这个问题。还有,计时部分做得对吗?看起来不需要那么长时间,当我跑步时,我会得到69391841667800纳秒 以下是我的InsertSort计时分析代码(InsertTime)-Java 随机数排序方法的时间测试代码问题,java,random,timing,insertion-sort,Java,Random,Timing,Insertion Sort,最后,我为带有时间分析代码的排序方法编写了工作代码,但是当我将随机数生成器代码放在方法调用中而不是默认的赋值int[]list={9,1,8,2,7,3,6,4,5}时;我得到一个错误-类型不匹配:无法从ArrayList转换为int[]”。我尝试更改GeneratorDomainList以返回数组,但仍然得到相同的错误,然后我尝试将InsertSort类中的每个“数组”更改为“列表”,并且仍然在计时代码“类型不匹配:无法从ArrayList转换为int[]”中得到相同的错误,然后假设我必须在R
公共类插入时间{
私有int[]arr;
公共插入时间(int[]数组){
arr=阵列;
}
私有布尔值更多(int值1,int值2)
{
返回值1>值2;
}
公共无效排序()
{
int size=arr.length;
内部温度,j;
对于(int i=1;i0&&more(arr[j-1],temp);j--)
{
arr[j]=arr[j-1];
}
arr[j]=温度;
}
}
公共静态void main(字符串[]args)
{
int[]数组=Random.generateRandomList(5,1,10);
InsertSort bs=新的InsertSort(数组);
b.sort();
对于(int i=0;我不会返回ArrayList
并将其分配到int[]
变量,因为这没有任何意义。请先根据副本将列表转换为数组。老实说,您正在使用的一些代码似乎是借用的代码,您不理解的代码,并表示它是您的。这不是您应该做的。此外,请在以后发布格式良好且易于阅读的代码。如何处理你的意思是格式良好?你的意思是你不必向下滚动就能看到所有内容吗?我一直在试图弄清楚,为什么我们谈论的不是网站格式,而是你的格式。代码格式很重要。很多。而且制定规则不是为了迫使编码人员创建“漂亮”的网站而是鼓励程序员创建对其他人(以及他们未来的自己)来说容易的代码要理解和调试,您的代码两者都不是。您需要努力学习并遵循这些格式规则,包括适当使用缩进。例如,请检查。您已经要求,已经要求您更好地设置代码格式,并且已经得到了答案。请停止以这种方式浪费我们的时间。
public class InsertTime {
private int[] arr;
public InsertTime(int[] array) {
arr = array;
}
private boolean more(int value1, int value2)
{
return value1 > value2;
}
public void sort()
{
int size = arr.length;
int temp,j;
for(int i=1; i<size; i++)
{temp=arr[i];
for(j=i; j>0 && more(arr[j-1], temp); j--)
{
arr[j]=arr[j-1];
}
arr[j]=temp;
}
}
public static void main(String[] args)
{
int[] array = Random.generateRandomList(5, 1, 10);
InsertSort bs = new InsertSort(array);
bs.sort();
for(int i=0;i<array.length ;i++)
{
System.out.print(array[i] + " ");
}
long endTime = System.nanoTime(); //Current system Time at end
long startTime = 0;
long duration = (endTime - startTime); //divide by 1000000 to get milliseconds.
System.out.print(duration);
}
}
import java.util.ArrayList;
public class Random {
public static void main(String[] args)
{
System.out.println(generateRandomList(5, 1, 10));
}
public static ArrayList<Integer> generateRandomList( int size, int min, int max) {
ArrayList<Integer> list;
list = new ArrayList<>();
for(int i=0;i<size;i++) {
int n = (int)(Math.random() * (max-min))+min;
list.add(n);
}
return list;
}
}