#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
int n = 0;
cin >> n;
vector<string> ve;
cin.get();
while (n--) {
string s;
getline(cin, s);
ve.push_back(s);
}
sort(ve.begin(), ve.end());
for (int i = 0; i < ve.size(); ++i) {
cout << ve[i] << endl;
}
return 0;
}
简单的方法就是这样了.要是不想用标准库也行,不过代码会更长一点
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
bool cmp(string a,string b){
return a < b; //按字典序从小到大排列
}
int main()
{
int n=0;
cin>>n;
string s[n];
for (int i=0;i<n;i++)
{
cin>>s[i];
}
sort(s,s+n,cmp);
for(int i = 0;i < n;i++)
{
cout << s[i]<<" "<<endl;
}
return 0;
}
这已经是最简单了,不能再简单了,大一也应该能看懂了吧.
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int compare(string s1, string s2) {
int len1 = s1.length(),
len2 = s2.length();
int i, j;
for (i = 0, j = 0; i < len1 && j < len2; i++, j++) {
if (s1.at(i) == s2.at(j))
continue;
else
return s1.at(i) - s2.at(j);
}
if (i < len1)
return s1.at(i);
else if (j < len2)
return -1*s2.at(j);
else
return 0;
}
void swap(string& s1, string& s2) {
string s = s1;
s1 = s2;
s2 = s;
}
int main() {
vector<string>v;
int n,i=0;
cin >> n;
cin.get();//吃掉 换行符 \n
string str;
while (i++<n) {
getline(cin, str);
v.push_back(str);
}
int j,mark;
for (i = 0; i < n - 1; i++) {
mark = 0;
for (j = n - 1; j > i; j--) {
if (compare(v[j], v[j-1])<0) {// 升序
swap(v[j], v[j - 1]);
mark = 1;
}
}
if (!mark) break;
}
for (i = 0; i < n; i++) {
cout << v[i] << endl;
}
}
/*
3
Bye!
Beijing Hotel.
bilibili
*/