Помощь в решении алгоритма - PullRequest
       1

Помощь в решении алгоритма

1 голос
/ 31 октября 2010

Предположим, чтобы вернуть количество сравнений символов. В цикле while () я сравниваю индекс символов и обновляю счетчик. У меня вопрос, правильно ли это делать таким образом, или я должен сравнивать самих персонажей. Я думаю, что сравнение индекса и обновление счетчика такое же, как сравнение самих символов. Есть идеи?

Нужна помощь.

Ниже приведен код алгоритма.

    // Sort an array of strings using quick sort
   // Always pivot on the first element
   // Return the number of CHARACTER comparisons

  public int stringQuickSort(ComparableByte[][] strings) {
      Counter nCompares = new Counter();
      sortStringQuickSort(strings, 0, strings.length-1, 0, nCompares, false);
    return nCompares.value;
  }

  public void sortStringQuickSort(ComparableByte[][] strings, int lo, int hi, int d, Counter nCompares, boolean switchToOtherAlgorithm){
      if(!switchToOtherAlgorithm){
      if(hi <= lo)
          return;
      }else if(hi <= lo+10){

              stringInsertionSort(strings);
          return;
      }
      int lt = lo, gt = hi;
      int v = characterAt(ComparableByte.toString(strings[lo]), d);
      int i = lo+1;

      while(i <= gt){
          int t = characterAt(ComparableByte.toString(strings[i]), d);
          nCompares.value++;
          if (t < v){
              swapTwoComparableByteElements(strings, lt++, i++);
              nCompares.value++;
          }
          else if(t > v){
              swapTwoComparableByteElements(strings, i, gt--);
          }
          else 
              i++;
      }

      sortStringQuickSort(strings, lo, lt-1, d, nCompares, switchToOtherAlgorithm);
      if(v >= 0){
          sortStringQuickSort(strings, lt, gt, d+1, nCompares, switchToOtherAlgorithm);
      }
      sortStringQuickSort(strings, gt+1, hi, d, nCompares, switchToOtherAlgorithm);
  }

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 31 октября 2010

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

Итак, да, не имеет значения, что именно вы рассчитываете, если вы позаботитесьсчитать правильные операции.Вам все равно, являются ли они символами индексов, если вы фактически считаете, когда вашей программе нужно вычислить < > <= >= = операцию, связанную с вводом и текущей реализацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...