我一直在不同的时间

时间:2014-01-27 22:28:01

标签: java sorting time numbers

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

这些是给出的指示 在本实验中,您将写下:

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

驱动程序类应该运用其他类,以便MyNum类为Node类分配一个数字和Time类。该节点被添加到Storage类,该类维护从Low(位置0)到High(位置49)添加的节点的排序列表。驱动程序类将完成此过程50次,并在完成后按排序顺序和插入顺序显示所有节点的时间,最低和最高节点时间。

包lab1; 这是主要类控制一切     公共类司机{

/**
 * @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;
 }

}

1 个答案:

答案 0 :(得分:0)

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

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

public class Node {
    int num;
    long time;

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