Время работы для методов сортировки над многосперскими массивами

StackOverflow https://stackoverflow.com/questions/4111530

Вопрос

У меня есть различные методы сортировки, которые сортируют одинаковые 100 000 случайных чисел.

Я использую следующий метод, чтобы найти время выполнения каждого

long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

И следующее для случайного номера в сети

int maxSize = 100000;  // array size
   Sortarr arr, iniArr;         // reference to array
   arr = new Sortarr(maxSize);  // create the array
   iniArr = new Sortarr(maxSize);

   // insert random numbers
   Random generator = new Random();
   for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

Как я могу изменить это, чтобы у меня может быть каждый из них сортирует 100 массивов, а не только один, и считает время каждого массива? Например. Run1 - 23 мс; Run2 - 25 мс; ... Run100 - 22 мс

РЕДАКТИРОВАТЬ:У меня есть одна последняя вещь. Таким образом, каждая итерация сортирует массив несколько способов, скажем, вставка, объединение и быстрые сортировки. Таким образом, скажем, вставка = 300 мс, Merge = 200 мс и быстрых = 100 мс. Мне нужно, для каждой итерации, найдите, какой метод сортировал самый быстрый.

Я знаю, что это простая вещь типа Min/Max, которую вы делаете тысячу раз в более низких классах программирования. Было бы легче бросить каждое значение в массив и использовать массив. (Что бы это ни было, новичок в синтаксисе Java ..)

Это было полезно?

Решение

В настоящее время похоже, что вы создаете массив, а затем многократно сортируете с помощью разных функций.

Вам просто нужно поместить все это в петлю.

int maxRuns = 100;

int maxSize = 100000;  // array size

for (int run=0; run<maxRuns; run++) {   
    Sortarr arr, iniArr;         // reference to array
    arr = new Sortarr(maxSize);  // create the array
    iniArr = new Sortarr(maxSize);

    // insert random numbers
    Random generator = new Random();
    for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

    long insertionStart = System.currentTimeMillis();
    arr.Clone(iniArr);
    arr.insertionSort();
    long insertionFinal = System.currentTimeMillis() - insertionStart;
    /* <more code goes here> */
}

Вы можете использовать индекс run При печати ваших результатов.

Другие советы

Вы, наверное, будете делать что -то вроде:

for (int try = 0; try < 100; try++) {
   iniArr = new Sortarr(maxSize);

   // insert random numbers
   Random generator = new Random();
   for (int i = 0; i < maxSize; i++) iniArr.insert(generator.nextInt());

   long insertionStart = System.currentTimeMillis();
   arr.Clone(iniArr);
   arr.insertionSort();
   long insertionFinal = System.currentTimeMillis() - insertionStart;

   // print out the time, and/or add up the total
}

Тебе до сих пор нужна инициализация заранее. Я думаю, я не знаю, почему массив клонирован до того, как он сортируется. Вы можете напрямую отсортировать этот массив?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top