C++ C++;在对象指针数组上使用selectionSort算法

C++ C++;在对象指针数组上使用selectionSort算法,c++,arrays,algorithm,pointers,C++,Arrays,Algorithm,Pointers,我试图利用选择排序算法对作为每个对象成员变量的int上的对象指针数组进行排序。getter函数是getVar(),可以正常工作。很明显,我这里的方法行不通,因为我最终尝试用对象指针交换int。我肯定我在声明和使用anObject*=temp的过程中遗漏了一些东西,但我只是没有领会它。(我在这个话题上看到了几个类似的问题,但没有一个是这样的。)谢谢 void selectSort(anObject* array[], int size) { int i; int minIdx; int minVa

我试图利用选择排序算法对作为每个对象成员变量的int上的对象指针数组进行排序。getter函数是getVar(),可以正常工作。很明显,我这里的方法行不通,因为我最终尝试用对象指针交换int。我肯定我在声明和使用anObject*=temp的过程中遗漏了一些东西,但我只是没有领会它。(我在这个话题上看到了几个类似的问题,但没有一个是这样的。)谢谢

void selectSort(anObject* array[], int size) {
int i;
int minIdx;
int minVal;

for (i = 0; i < (size - 1); i++) {
    minIdx = i;
    minVal = array[i]->getVar();
    for (int index = i + 1; index < size; index++) {
        if (array[index]->getVar() < minVal) {
            minVal = array[index]->getVar();
            minIdx = index;
        }
    }
    array[minIdx] = array[i];
    array[i] = minVal; // invalid conversion from int to *anObject
}
void selectSort(对象*数组[],整数大小){
int i;
int minIdx;
因特明瓦尔;
对于(i=0;i<(大小-1);i++){
minIdx=i;
minVal=array[i]->getVar();
对于(int index=i+1;indexgetVar()getVar();
minIdx=指数;
}
}
数组[minIdx]=数组[i];
数组[i]=minVal;//从int到*anObject的转换无效
}

}

这里有一个解决方案。如果你在C++中,你也可以使用STD:SWAP()。
void selectSort(anObject* array[], int size) {
    int i;
    int minIdx;
    int minVal;
    anObject *temp;

    for (i = 0; i < (size - 1); i++) {
        minIdx = i;
        minVal = array[i]->getVar();
        for (int index = i + 1; index < size; index++) {
            if (array[index]->getVar() < minVal) {
                minVal = array[index]->getVar();
                minIdx = index;
            }
        }
        temp = array[minIdx]
        array[minIdx] = array[i];
        array[i] = temp;
    }
}
void selectSort(对象*数组[],整数大小){
int i;
int minIdx;
因特明瓦尔;
对象*温度;
对于(i=0;i<(大小-1);i++){
minIdx=i;
minVal=array[i]->getVar();
对于(int index=i+1;indexgetVar()getVar();
minIdx=指数;
}
}
温度=阵列[minIdx]
数组[minIdx]=数组[i];
数组[i]=温度;
}
}

您应该交换i和minIdx上的元素(使用temp)。您有setValue()成员函数吗?谢谢,我已经让冒泡排序版本工作了,但是这个更有效!