描述
给定 n 个字符串,请对 n 个字符串按照字典序排列。
数据范围: 1≤n≤1000 1≤n≤1000 ,字符串长度满足 1≤len≤100 1≤len≤100
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1
输入:
9
cap
to
cat
card
two
too
up
boat
boot
输出:
boat
boot
cap
card
cat
to
too
two
up
具体实现:
#include<stdio.h>
#include<string.h>
int main()
{
int n = 0;
printf("请输入:\n");
scanf("%d", &n);
char str1[n][100] = {};
int tmp1 = 0;
printf("字符串:\n");
for (int i = 0; i < 1000; i++)
{
tmp1 = 0;
while (getchar() != 32)
{
str1[i][tmp1] = getchar();
tmp1++;
}
i++;
if (getchar() == '\n')
{
str1[i][tmp1] = '\0';
break;
}
}
char tmp[101] = { 0 };
//此处为冒泡排序
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (strcmp(str1[i], str1[j]) > 0)
{
strcpy_s(tmp, str1[i]);
strcpy_s(str1[i], str1[j]);
strcpy_s(str1[j], tmp);
}
}
}
for (int i = 0; i < n; i++)
{
printf("%s\n", str1[i]);
}
return 0;
}
时间复杂度:
On^2
小结:
二维数组行为字符串数
二维数组逐字符串输出用循环输出
strcmp函数的应用:逐字符比较字符串的大小