gpt4 book ai didi

C++ 字母顺序字符串数组

转载 作者:行者123 更新时间:2023-11-28 01:14:12 25 4
gpt4 key购买 nike

我需要一些帮助,因为我一整天都在想这个算法......所以,基本上我想创建一个函数来输入一个字符串数组和元素的数量,我想按顺序安排一切......但有时它有效,有时不......如果你能帮助我,我将不胜感激......我不需要使用任何东西,只需要基本字符串(不是字符数组) 及其功能...谢谢!

#include <iostream>
#include <string>
#include <string.h>
#include <sstream>
#include <ctype.h>

bool sortS(string a ,string b)
{
for(int i=0;i<a.length() && i<b.length();i++)
{
if(a.substr(i,1)>b.substr(i,1))return false;
}
return true;
}

void selectionSort(string arr[], int n)
{
int i, j, min_idx;
for (i = 0; i < n-1; i++)
{
min_idx = i;
for (j = i+1; j < n; j++)
{
if (sortS(arr[j],arr[min_idx]))
{
min_idx = j;
}
swap(arr[min_idx], arr[i]);
}
}
}

int main()
{
string vett[]={"Junie","Andy","Laine","Buford","Kathrin","Slyvia","Earlean","Lakeshia","Marry","Arica"};
int n=sizeof(vett)/sizeof(vett[0]);
for(int i=0;i<n;i++)
{
cout<<vett[i]<<" ";
}
cout<<endl;
selectionSort(vett,n);
for(int i=0;i<n;i++)
{
cout<<vett[i]<<endl;
}
cout<<endl;

return 0;
}

输出是这样的:

Arica
Andy
Laine
Buford
Kathrin
Slyvia
Earlean
Lakeshia
Marry
Junie

最佳答案

假设您必须逐个字符地检查输入字符串:

您的 sortS 仅在一对 char 大于时返回 false,如果它们小于则不测试。如果输入字符串的长度不同并且匹配到最小的长度,它也会返回 true。当 string::operator[]() 更清晰时,它还使用 substring 提取 char

尝试:

bool sortS(string a ,string b)
{
for(int i=0; i < a.length() && i < b.length(); ++i)
{
if (a[i] > b[i])
return false;
else if (a[i] < b[i])
return true;
}
return a.length() < b.length() ;
}

否则就很简单了:

bool sortS(string a ,string b)
{
return a < b;
}

关于C++ 字母顺序字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59237713/

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