private void compute()

in src/main/java/org/apache/datasketches/characterization/TrueRanks.java [112:139]


  private void compute(final boolean LTEQ) {
    length = dStream.length;
    sortedDStream = dStream.clone();
    Arrays.sort(sortedDStream);
    sortedAbsRanks = new int[length];
    if (LTEQ) { //if LTEQ == true, criteria is <=
      sortedAbsRanks[length - 1] = length;
      int i = length - 2;
      while (i >= 0) { //goes backwards
        if (sortedDStream[i] == sortedDStream[i + 1]) { sortedAbsRanks[i] = sortedAbsRanks[i + 1]; }
        else { sortedAbsRanks[i] = i + 1; }
        i--;
      }
    } else { // LT
      sortedAbsRanks[0] = 0;
      int i = 1;
      while (i < length) { //forwards
        if (sortedDStream[i - 1] == sortedDStream[i]) { sortedAbsRanks[i] = sortedAbsRanks[i - 1]; }
        else { sortedAbsRanks[i] = i; }
        i++;
      }
    }
    streamAbsRanks = new int[length]; //put the ranks in original stream order
    for (int j = 0; j < length; j++) {
      final int idx = BinarySearch.find(sortedDStream, 0, length - 1, dStream[j]);
      streamAbsRanks[j] = sortedAbsRanks[idx];
    }
  }