对简单字符串的排序整理(简单的2种方法)

一、用sort对字符串排序

1.sort可以对string排序

我在做题的时候发现我用sort对string排序的语句判错。

我最开始写的代码是

    string s;
    cin>>s;
    int len=s.length();
    sort(s,s+len);

我的天,我现在看见我这么写,我真想给自己一下子。现在因为返乡隔离什么的大脑都已经混乱了,我想我真是封的疯了。

在我查找相关的资料之后,终于大彻大悟,醍醐灌顶。正确代码如下:

    string s;
    cin>>s;
    sort(s.begin(),s.end());

看见正确的之后突然想起来string是一个类啊,和vector,queue什么的都有库函数啊,而且巨好用啊。这样事情就明了了,直接用这个方法对string排序就好了。

2.sort可以对字符数组排序

int main(){
    char ch[1001];
    cin>>ch;
    int len=strlen(ch);
    sort(ch,ch+len);
    cout<<ch;
    return 0;
}

用cin直接按首地址输入字符串,不能读入空格和回车

输入一串字符之后再按回车就直接输出了,应该根本没机会在cin中按回车 。(如果此话有错误,欢迎家银们批评指正)

如果这样输入字符串

这样应该是没有超过100个字符都给算到里面了,如果输入没有超过100个字符,结束输入用ctrl+z结束。

 如果输入超过100个字符,即使在输入的过程中超过了100,但还是可以输入,最后按回车就结束输入了,字符数组里面只取100个字符。

二、类似冒泡排序的方法

这个方法具体有没有名字我不知道,但我刚学的时候总是用这个方法,其实还挺好用。

但是时间复杂度高,为O(n2)。

int main(){
    char ch[1001];
    cin>>ch;
    int len=strlen(ch);
    for(int i=0;i<len-1;++i){
        for(int j=i+1;j<len;++j)
            if(ch[j]<ch[i])
                swap(ch[i],ch[j]);
    }
    cout<<ch;
    return 0;
}

i 从 0 循环到 len-1,j 从 i+1 到最后。

如果在  s[i]  后面有比  s[j]  小的,就把小的放在前面,每一次移动都确定了前面的1个元素的位置,最后就排好序了。属于稳定排序。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_房似锦_

好心人哇!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值