HJ14. 字符串排序
描述
输入描述
输入第一行为一个正整数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
C 解法, 执行用时: 1ms, 内存消耗: 224KB, 提交时间: 2018-08-24
#include <stdio.h> int main() { int n; scanf("%d",&n); char str[n][100]; char a[100]; for(int i=0;i<n;i++) { scanf("%s",str[i]); } for(int i=0;i<n;i++) { for(int j=0;j<n-1-i;j++) { //strcmp(str[j],str[j+1]) if(strcmp(str[j],str[j+1])>0) { strcpy(a,str[j+1]); strcpy(str[j+1],str[j]); strcpy(str[j],a); /*for(int k=0;k<100;k++) { a[k]=str[j+1][k]; str[j+1][k]=str[j][k]; str[j][k]=a[k]; }*/ } } } for(int i=0;i<n;i++) { printf("%s\n",str[i]); } }
C 解法, 执行用时: 1ms, 内存消耗: 348KB, 提交时间: 2020-08-13
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(void) { int num = 0, j; char cin[101]; char mystr[1000][101]; scanf("%d", &num); for(int i = 0; i < num; i++) { scanf("%s", cin); for(j=i-1; j>=0; j--){ if(strcmp(cin, mystr[j])<0){ strcpy(mystr[j+1], mystr[j]); }else{ strcpy(mystr[j+1], cin); break; } } if(j<0) { strcpy(mystr[0],cin); } } for(int i=0; i < num; i++) { printf("%s\n", mystr[i]); } return 0; }