使用选择排序对对象数组进行排序c ++

Posted

技术标签:

【中文标题】使用选择排序对对象数组进行排序c ++【英文标题】:Using a selection sort to sort an array of objects c++ 【发布时间】:2022-01-03 09:02:20 【问题描述】:

目前,我编写了一个基本的选择排序,我需要让它根据类成员对一个对象数组进行排序——如果对守门员[MAX_GOALIES].getWins() 进行排序,则 getWins() 中的整数需要是按降序排列。以下是我目前所拥有的排序功能:

void sortWins(int array[], int size)

    int maxIndex, maxValue;
    
    for (int start=0;start<(size -    1);start++)
    
        maxIndex = start;
        maxValue = array[start];
        for (int index = start + 1; index < size; index ++)
        
            if (array[index].getWins() > maxValue.getWins())
            
                maxValue = array[index];
                maxIndex = index;
            
        
        swap(array[maxIndex], array[start]);
    

我如何确保 sort 函数对类成员 getWins() 进行排序?

【问题讨论】:

你忘了问问题! 该函数对整数数组进行操作,而不是对象。 int 类型没有成员函数 getWins()(或 any 成员函数,因为它根本不是一个类)。您尝试手动选择排序是否有原因?为什么不定义适当的运算符并使用std::sort 【参考方案1】:

您可以使用std::sort 函数,指定您想要的排序标准。一个可能的例子是:

std::sort(objectsVector.being(), objectsVector.end(), [](object a, object b) -> bool 
   return a.getWins() > b.getWins();
);

这样在objectsVector中你将是对象列表,按降序排列。

如果您想使用实现选择排序的自定义函数,您必须向该函数传递一个对象数组,而不是整数。然后在您的函数中,您将对 getWins() 返回的值进行比较

【讨论】:

以上是关于使用选择排序对对象数组进行排序c ++的主要内容,如果未能解决你的问题,请参考以下文章

如何按值对数组进行排序(排序)? *有一个转折*

在 React 中使用选择和按钮对数组进行排序问题

编写一个sort函数,它用于对任何类型的数组进行排序

选择排序法对数组进行排序

求C语言编程编写函数sort:对数组a中的数进行从小到大排序

C语言怎样对二维数组中每个元素进行选择排序