int_array Utils::Sort(int_array &array_Renamed) { int_array index = initialIndex((int)array_Renamed.size()); int_array newIndex(array_Renamed.size()); int_array helpIndex; int numEqual; quickSort(array_Renamed, index, 0, (int)array_Renamed.size() - 1); // Make sort stable int i = 0; while (i < index.size()) { numEqual = 1; for (int j = i + 1; ((j < index.size()) && (array_Renamed[index[i]] == array_Renamed[index[j]])); j++) { numEqual++; } if (numEqual > 1) { helpIndex = int_array(numEqual); for (int j = 0; j < numEqual; j++) { helpIndex[j] = i + j; } quickSort(index, helpIndex, 0, numEqual - 1); for (int j = 0; j < numEqual; j++) { newIndex[i + j] = index[helpIndex[j]]; } i += numEqual; } else { newIndex[i] = index[i]; i++; } } return newIndex; }
int_array Utils::sortWithNoMissingValues(double_array &array_Renamed) /* @non_null@ */ { int_array index = initialIndex((int)array_Renamed.size()); if (array_Renamed.size() > 1) { quickSort(array_Renamed, index, 0, (int)array_Renamed.size() - 1); } return index; }
int_array Utils::Sort(double_array &array_Renamed) { // @non_null@ - @pure@ int_array index = initialIndex((int)array_Renamed.size()); if (array_Renamed.size() > 1) { //array_Renamed = array_Renamed; replaceMissingWithMAX_VALUE(array_Renamed); quickSort(array_Renamed, index, 0, (int)array_Renamed.size() - 1); } return index; }
int_array Utils::stableSort(double_array &array_Renamed) { int_array index = initialIndex((int)array_Renamed.size()); if (array_Renamed.size() > 1) { int_array newIndex(array_Renamed.size()); int_array helpIndex; int numEqual; //array_Renamed = array_Renamed.clone(); replaceMissingWithMAX_VALUE(array_Renamed); quickSort(array_Renamed, index, 0, (int)array_Renamed.size() - 1); // Make sort stable int i = 0; while (i < index.size()) { numEqual = 1; for (int j = i + 1; ((j < index.size()) && Utils::eq(array_Renamed[index[i]], array_Renamed[index[j]])); j++) { numEqual++; } if (numEqual > 1) { helpIndex = int_array(numEqual); for (int j = 0; j < numEqual; j++) { helpIndex[j] = i + j; } quickSort(index, helpIndex, 0, numEqual - 1); for (int j = 0; j < numEqual; j++) { newIndex[i + j] = index[helpIndex[j]]; } i += numEqual; } else { newIndex[i] = index[i]; i++; } } return newIndex; } else { return index; } }
double Utils::kthSmallestValue(double_array &array_Renamed, int k) { int_array index = initialIndex((int)array_Renamed.size()); return array_Renamed[index[select(array_Renamed, index, 0, (int)array_Renamed.size() - 1, k)]]; }
const std::string &BreakTypeOptionEntry::initialValue() const { return values()[initialIndex()]; }