帮助解决算法

时间:2010-10-31 14:40:00

标签: java algorithm

我想要返回字符比较的数量。在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 :(得分:0)

通常这些东西用于提供算法所需比较的经验估计,以研究预期行为是否正确。

所以,是的,如果您注意计算正确的操作,那么您的计算方法并不重要。只要您在程序需要计算与输入和当前实现相关的< > <= >= =操作时实际计算,就不关心它们是否是索引的字符。