我需要一些帮助,因为我整天都在想这个算法now...So,基本上我想创建一个接受输入字符串数组和元素数量的函数,我想在order...but中安排一切有时它有效,有时不...如果你能帮助我,我将不胜感激...我不需要使用任何东西,只需要基本的字符串(不是字符数组)和它的函数...谢谢!
#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发布于 2019-12-09 01:11:36
假设您必须逐个字符地检查输入字符串:
当一对char大于时,你的sortS只返回false,它不会测试它们是否小于。如果输入字符串的长度不同,并且匹配到最小字符串的长度,它也会返回true。当char更清晰时,它还使用string::operator[]()来提取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;
} 发布于 2019-12-09 01:50:54
所以我解决了problem...apparently,这与我的排序算法(选择排序)...so有关,我通过将排序算法改为冒泡排序来解决它,这是整个程序:
#include <iostream>
#include <string>
#include <string.h>
#include <sstream>
#include <ctype.h>
using namespace std;
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() ;
}
void bubbleSort(string arr[], int n)
{
int pass=0;
string temp;
for(int i = 0; i<n; i++)
{
for(int j = i+1; j<n; j++)
{
if(sortS(arr[j],arr[i]))
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
pass++;
}
}
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;
bubbleSort(vett,n);
for(int i=0;i<n;i++)
{
cout<<vett[i]<<endl;
}
cout<<endl;
return 0;
}https://stackoverflow.com/questions/59237713
复制相似问题