gpt4 book ai didi

c++ - 对字符串数组进行归并排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:49 30 4
gpt4 key购买 nike

我正在尝试使用合并排序算法对字符串数组进行排序。我编写了这段代码,它适用于整数数组,但令人惊讶的是,它不适用于字符串数组!它似乎只是对数组的第二部分进行排序。我有不知道这段代码有什么问题!非常感谢您的帮助。

<p></p>

#include <iostream>
#include <list>
#include <string>
using namespace std;

void MergeSortA(int low , int high);
void MergeA(int low ,int mid ,int high);

string currentArray[5];
int main()
{
for(int i = 0; i < 5; i++)
cin >> currentArray[i];

MergeSortA(0,4);

for(int i = 0; i < 5; i++)
cout << currentArray[i] <<endl;

return 0;
}

void MergeSortA(int low , int high)
{
int mid = 0;
if(low < high)
{
mid = ((low+high)/2);
MergeSortA(low , mid);
MergeSortA(mid+1,high);
MergeA(low,mid,high);
}
}
void MergeA(int low ,int mid , int high)
{
int i = low, j = mid+1 , k = low;
string Temp[5];

while(i <= mid && j <= high)
{
if( currentArray[i] < currentArray[j] )
{
Temp[k].assign(currentArray[i]);
i++;
}
else
{
Temp[k].assign(currentArray[j]);
j++;
}
k++;
}
if(i > mid )
{
for(int h = j ;h <= high ; h++ )
{
Temp[k].assign(currentArray[h]);
k++;
}
}
else
for(int h = i; h<= mid ; h++ )
{
Temp[k].assign(currentArray[h]);
k++;
}
for(int i = 0; i <= high ; i++)
{
currentArray[i].assign(Temp[i]);
}
}

最佳答案

将值从 Temp 数组复制回 currentArray 时需要更正:

for(int i = low; i <= high ; i++) //copy from low to high
{
currentArray[i].assign(Temp[i]);
}

关于c++ - 对字符串数组进行归并排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535358/

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