c++ - C++ 字母顺序字符串数组
问题描述
我需要一些帮助,因为我整天都在想这个算法......所以,基本上我想创建一个函数来输入一个字符串数组和元素的数量,我想把所有东西都安排在订单...但有时它有效,有时无效...如果您能帮助我将不胜感激...我不需要使用任何东西,只需使用基本字符串(不是字符数组)功能...谢谢!
#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
解决方案
假设您必须逐个字符地检查输入字符串:
当一对s 大于时,您sortS
唯一的回报,它不会测试它们是否小于。如果输入字符串的长度不同并且匹配到最小的长度,它也会返回。它还用于提取更清晰的时间。false
char
true
substring
char
string::operator[]()
尝试:
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;
}
推荐阅读
- kernel - Make -j4 不再为嵌入式编译设备树二进制文件
- dart - Flutter Maps 实时位置崩溃,因为实时位置不是未来
你怎么修? - json - Json 对象未正确显示在 Attivio 搜索中
- javascript - 用户在 Safari 中播放后 HTML5 音频标签承诺错误
- api - 在 Golang 中使用任何类型的加密(AES 等)加密和解密 JWT
- python - 如何将 DRF 序列化器与 Graphene 一起使用
- python - 解析此 xml 文件时产生此 KeyError 的原因是什么?
- android - 在移动到下一个活动之前完整地运行一个函数
- python - 无法使用 python 在 RaspberryPi 中的 MySQL 表中保存数据
- python - 是否可以在熊猫中使用自定义过滤器功能?