题目描述
按照长度,由小到大对以下字符串排序(长度相同的按照字母序由低至高)。
输入两行内容,第一行输入字符串单词数 n n n,第二行输入由 n n n个单词组成的字符串(不含标点,由空格隔开)。
输出排序后的字符串。
例如:
输入
3
Introduction to Algorithms
输出
to
Algorithms
Introduction
参考代码
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int nums , i, j, k, t;
cin >> nums;
char str[nums][16], *ps[nums], *p;
//初始化字符串指针数组
for(i = 0; i < nums; i++) ps[i] = str[i];
//输入字符串
for(i = 0; i < nums; i++){
cin >> str[i];
}
//选择排序
for(i = 0; i < nums; i++){
k = i;
for(j = i + 1; j < nums; j++) {
t = strlen(ps[k]) - strlen(ps[j]);
if (t > 0 || (t == 0 && strcmp(ps[k], ps[k+1]) > 0))
k = j;
}
if(k != i){
p = ps[k];
ps[k] = ps[i];
ps[i] = p;
}
}
for(i = 0; i < nums; i++)
cout << ps[i] << endl;
return 0;
}