【问题标题】:I keep getting i different time我不断得到我不同的时间
【发布时间】:2023-04-09 17:22:02
【问题描述】:

我试图输出一个随机数及其生成时间并对其进行排序,但每次我运行它时,它都会对数字进行排序,但在排序后每个数字的时间不同。

这些是给出的说明 对于本实验,您将编写:

1) 一个“MyNum”类,它将生成一个从 1 到 200 的随机整数。 2)一个“时间”类,它将以足够的分辨率返回系统时间,以显示插入之间的时间。我建议 System.nanoTime()。 3) 一个“节点”类,它将封装整数及其生成时间。 4)和一个“存储类”类,它将包含使用插入排序的所有已排序节点。 一种。这个类应该有一个“add”方法来添加到每个节点中。 湾。和方法,以便驱动程序类可以显示已排序的节点列表 5) “主”或驱动程序类。

驱动程序类应该使用其他类,例如 MyNum 类分配一个数字,Time 类分配一个时间给 Node 类。该节点被添加到 Storage 类,该类维护从低(位置 0)添加到高(位置 49)的节点的排序列表。驱动类会完成这个过程 50 次,完成后显示所有节点的排序顺序和插入顺序以及时间,以及最低和最高节点时间。

包实验室1; 这是主类控制一切 公共类驱动程序{

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

  int[] out = new int[50];
  for (int i = 0; i < out.length; i++) {
      out[i] = MyNum.genRandom(); 
  }
  System.out.println("Insertion order: ");
  for (int i = 0; i < out.length; i++)
  System.out.println("Int: " + out[i] + " " + "Time: " + Time.time());
  System.out.println();
  System.out.println("Sorted order: ");

  Storage.insertionSort(out);

  for (int i = 0; i < out.length; i++)
     System.out.println("Int: " + out[i] + " " + "Time: " + Time.time());
     System.out.println("Lowest time: " + "Highest time: ");
 }

}

数字类

package lab1;

import java.util.*;

/**
 *
 * @author alpho_000
 */
public class MyNum {

  static Random number = new Random();
  public static int genRandom(){

  return number.nextInt(200)+1;
  } 
 }

Node 
 package lab1;

 /**
 *
 * @author alpho_000
 */
public class Node {

/**
 *@return
 */
static String node(){

   int num;
   long time;

   num = MyNum.genRandom();
   time = Time.time(); 

   return "Int: " + num + " " + "Time: " + time;
   }

}

时间

package lab1;

/**
 *
 * @author alpho_000
 */
public class Time {

   /**
   *
   * @return
   */
  public static long time(){
    return System.nanoTime();

 }

}

存储类 包lab1;

   public class Storage {
   static boolean insertionSort;


   public static int[] insertionSort(int[] MyNum){

  int temp;

 for (int i = 1; i < MyNum.length; i++) {
    for(int j = i ; j > 0 ; j--){
   if(MyNum[j-1] >= MyNum[j]){
       temp = MyNum[j];
       MyNum[j] = MyNum[j-1];
       MyNum[j-1] = temp;
   }
  }
   }
   return MyNum;
 }

}

【问题讨论】:

    标签: java sorting time numbers


    【解决方案1】:

    您实际上并没有存储每个数字的生成时间。您正在打印当前时间,丢弃时间,对数字进行排序,然后再次获取当前时间。

    您需要在 Node 类中添加一个 time 成员,并对节点进行排序而不是对整数进行排序。请注意,您现有的 Node 类只有局部变量,没有实际成员。您必须将变量声明放在任何这样的方法之外:

    public class Node {
        int num;
        long time;
    
        public Node() {
            this.num = generateRandom();
            this.time = System.nanoTime();
        }
    }
    

    【讨论】:

    • 我不明白你的意思。除了时间之外,你的所有课程都有问题。
    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2012-08-08
    • 2012-09-27
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多