一、用sort對字符串排序
1.sort可以對string排序
我在做題的時候發(fā)現(xiàn)我用sort對string排序的語句判錯。
我最開始寫的代碼是
string s;
cin>>s;
int len=s.length();
sort(s,s+len);
我的天,我現(xiàn)在看見我這么寫,我真想給自己一下子?,F(xiàn)在因為返鄉(xiāng)隔離什么的大腦都已經(jīng)混亂了,我想我真是封的瘋了。
在我查找相關(guān)的資料之后,終于大徹大悟,醍醐灌頂。正確代碼如下:
string s;
cin>>s;
sort(s.begin(),s.end());
看見正確的之后突然想起來string是一個類啊,和vector,queue什么的都有庫函數(shù)啊,而且巨好用啊。這樣事情就明了了,直接用這個方法對string排序就好了。
2.sort可以對字符數(shù)組排序
int main(){
char ch[1001];
cin>>ch;
int len=strlen(ch);
sort(ch,ch+len);
cout<<ch;
return 0;
}
用cin直接按首地址輸入字符串,不能讀入空格和回車
輸入一串字符之后再按回車就直接輸出了,應(yīng)該根本沒機會在cin中按回車 。(如果此話有錯誤,歡迎家銀們批評指正)
如果這樣輸入字符串
這樣應(yīng)該是沒有超過100個字符都給算到里面了,如果輸入沒有超過100個字符,結(jié)束輸入用ctrl+z結(jié)束。
?如果輸入超過100個字符,即使在輸入的過程中超過了100,但還是可以輸入,最后按回車就結(jié)束輸入了,字符數(shù)組里面只取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 循環(huán)到 len-1,j 從 i+1 到最后。文章來源:http://www.zghlxwxcb.cn/news/detail-449076.html
如果在? s[i]? 后面有比??s[j]? 小的,就把小的放在前面,每一次移動都確定了前面的1個元素的位置,最后就排好序了。屬于穩(wěn)定排序。文章來源地址http://www.zghlxwxcb.cn/news/detail-449076.html
到了這里,關(guān)于對簡單字符串的排序整理(簡單的2種方法)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!