[英]Selection Sort on an Array of Objects
在網上四處張望,但至今找不到任何相關信息。 我在C ++入門課程中,有一個正在處理對象數組的項目。 對象(稱為媒體)具有名稱和等級。 我將三個不同的媒體對象放入媒體對象數組。 我需要找到一種按名稱對它們進行排序的方法。 為我提供了用於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);
}
}
我已經通過重載<和來擺脫了strcmp
int media::operator<(media med)
{
return strcmp(mname, med.mname);
}
和strcpy通過重載=與
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](在此處嘗試太陽下的所有操作)時,我得到了損壞的數據錯誤。 我似乎無法弄清楚。 我一直在努力理解各種事物,這只會增加對侮辱的侮辱。 (還請注意,有些表示法可能不正確,但這是我在本課中所教的內容以及這位教授要求我們編寫的內容)
謝謝你的幫助!
您的代碼有兩件事:
media temp[1];
您為什么要將用於交換的臨時媒體存儲區設置為1的數組? temp = mry[min]; mry[min] = mry[pass]; temp = mry[min];
temp = mry[min]; mry[min] = mry[pass]; 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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.