gpt4 book ai didi

c++ - 对象数组的选择排序

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:14 26 4
gpt4 key购买 nike

上网查了一下,没有找到相关的资料。我在学习 C++ 入门类(class),并且有一个处理对象数组的项目。一个对象(称为媒体)有一个名称和一个评级。我将三个不同的媒体对象放入一个媒体对象数组中。我需要找到一种方法来按名称对它们进行排序。我得到了用于 C 字符串选择排序的代码,但一直无法弄清楚如何处理它以将其更改为处理媒体对象。这是我对 C 字符串的选择排序。

void selectsort(char str[][20], int N)
{
int pass, j, min;
char temp[20];
for (pass = 0; pass <= N - 2; pass++) // passes
{
min = pass;
for (j = pass + 1; j < N; j++) // in each pass
if (strcmp(str[min], str[j]) > 0)
min = j;
strcpy(temp, str[min]);
strcpy(str[min], str[pass]);
strcpy(str[pass], temp);
}
}

我通过重载 < with 摆脱了 strcmp

int media::operator<(media med)
{
return strcmp(mname, med.mname);
}

和 strcpy 通过重载 = with

void media::operator=(media med)
{
strcpy(mname, med.mname);
}

我相信这会返回相同的结果,是吗?

到目前为止,这是我的代码(只是自己投入其中,不知道如何去做)。

void selsort(media mry[], int n) // mry[] is the object array, n is the 
// number of objects in the array
{
int pass, j, min;
media temp[1];
for (pass = 0; pass <= n - 2; pass++) // passes
{
min = pass;
for (j = pass + 1; j < n; j++) // in each pass
if ((mry[min] < mry[j]) < 0)
min = j;
temp = mry[min];
mry[min] = mry[pass];
temp = mry[min];
}
}

我知道这段代码有很多缺陷。温度比较不起作用,当我尝试使用 *temp 或 temp[0](在这里尝试一切)时,我得到了损坏的数据错误。我似乎无法弄清楚。我一直在努力理解各种问题,这只会雪上加霜。(另外请注意,有些符号可能不正确,但这是我在这门课上学到的,也是这位教授要求我们编码的内容)

感谢您的帮助!

最佳答案

您的代码有两处错误:

  1. media temp[1]; 为什么您希望用于交换的临时媒体存储是 1 的数组?
  2. 交换:temp = mry[min]; mry[分钟] = mry[通过]; temp = mry[min]; 看出什么问题了吗?

这里是调整后的函数,BTW 可以正常工作:

void selsort(media mry[], int n) // mry[] is the object array, n is the 
// number of objects in the array
{
int pass, j, min;
media temp;
for (pass = 0; pass <= n - 2; pass++) // passes
{
min = pass;
for (j = pass + 1; j < n; j++) // in each pass
if ((mry[min] < mry[j]) < 0)
min = j;
temp = mry[min];
mry[min] = mry[pass];
mry[pass] = temp;
}
}

关于c++ - 对象数组的选择排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47403124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com