Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
    }
}
Ejemplo n.º 5
0
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)]];
}
Ejemplo n.º 6
0
const std::string &BreakTypeOptionEntry::initialValue() const {
	return values()[initialIndex()];
}