有5个字符串,要求将它们按由短到长的顺序排列,用string+vector方法

要用string+vector就是说用在vector中使用string类型的如:vector<string>ivec... 要用string+vector 就是说用在vector中使用string类型的如:vector<string>ivec 展开
 我来答
wangzhenvv
2010-04-25 · 超过14用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:0
展开全部
第一种 用string的
#include<iostream>
#include<string>
const int N=20;
const int n=5;
using namespace std;
void swap(char x,char y)
{
char p;
p=x;
x=y;
y=p;
}
void main()
{
char *a[n];
int i,j;
for(i=0;i<n;i++)
{
a[i]=new char[N];
cin>>a[i];
}
int minlen;
for(i=0;i<n;i++)
{
minlen=i;
for(j=i+1;j<n;j++)
if(strlen(a[j])<strlen(a[minlen]))
minlen=j;
swap(a[i],a[minlen]);
}
for(i=0;i<n;i++)
cout<<a[i]<<endl;
for(i=0;i<n;i++)
delete a[i];
}
第二种方法,用vactor的
#include<iostream>
#include<vector>
const int N=20;
const int n=5;
using namespace std;
template<class T>
int Size(vector<T> *x)
{
for(int i=0;(*x)[i]!='\0';i++)
{}
return i;
}
template<class T>
void swap(vector<T> x,vector<T> y)
{
vertor p;
p=x;
x=y;
y=p;
}
void main()
{
vector<char> *a[n];
int i,j;
for(i=0;i<n;i++)
{
a[i]=new vector<char>(N);
for(int j=0;j<N;j++)
{
(*a[i])[j]=getchar();
if((*a[i])[j]=='\n')
{
(*a[i])[j]='\0';
break;
}
}
}
int minlen;
for(i=0;i<n;i++)
{
minlen=i;
for(j=i+1;j<n;j++)
if(Size(a[j])<Size(a[minlen]))
minlen=j;
swap(a[i],a[minlen]);
}
for(i=0;i<n;i++)
{
for(j=0;j<Size(a[i]);j++)
cout<<(*a[i])[j];
cout<<endl;
}
cout<<endl;
for(i=0;i<n;i++)
delete a[i];
}
342708707
2010-04-23 · TA获得超过147个赞
知道答主
回答量:127
采纳率:0%
帮助的人:72.4万
展开全部
冒泡排序.你搜一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式