KS9. 字符串排序
描述
输入描述
每个测试用例的第一行是一个正整数 M ,表示数据集的样本数目输出描述
对每个数据集,输出所有样本的后六位构成的数字排序后的结果(每行输出一个样本的结果)示例1
输入:
4 abc123455 cba312456 boyxx213456 cdwxa654321
输出:
123455 213456 312456 654321
C 解法, 执行用时: 1ms, 内存消耗: 224KB, 提交时间: 2019-10-26
/*# include <stdio.h> # include <string.h> int change(char m) { int i,v; v=0; for(i=strlen(m)-6;i<strlen(m);i++) v = v*10 + m[i]; return v; } void main() { int i,M,max,temp; scanf("%d",&M); int x[M]; char s[M]; for(i=0;i<M;i++) { scanf("%s",&s[i]); x[i]=change(s[i]); } for(i=0;i<M-1;i++) for(int j=i+1;j<M;j++) if(x[i]<x[j]) { temp = x[i]; x[i] =x[j]; x[j] = temp; } for(i=0;i<M;i++) printf("%s\n",x[i]); }*/ #include<stdio.h> #include<string.h> int main() { int number; //输入数据集的样本数目 scanf ("%d",&number); char str[number][101]; int len[number]; int num[number]; for(int i=0;i<number;i++) { scanf("%s",str[i]); len[i] = strlen(str[i]); } //输出样本数据 for(int i=0;i<number;i++) { int ans=0; // num[i]=0; for(int j=0;j<6;j++) { //printf("%c",str[i][len[i]-6+j]); ans = ans*10 + str[i][len[i]-6+j]-'0'; } num[i]=ans; //printf("\n"); } int temp; for(int i=0;i<number-1;i++) { for(int j=0;number-1-j;j++) { if(num[j]>num[j+1]) { temp = num[j+1]; num[j+1]=num[j]; num[j]=temp; } } } for(int i=0;i<number;i++) { printf("%d\n",num[i]); } }
C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2020-05-02
#include <stdio.h> #include <string.h> int main() { int n,i,j; scanf("%d",&n); char arr[n][100],len[n]; int temp=0,num[n]; for(i=0;i<n;i++) { scanf("%s",arr[i]); len[i]=strlen(arr[i]); } for(i=0;i<n;i++) num[i]=0; for(i=0;i<n;i++) { for(j=len[i]-6;j<len[i];j++) { num[i]=num[i]*10+arr[i][j]-'0'; } } for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(num[i]>num[j]) { temp=num[i]; num[i]=num[j]; num[j]=temp; } } } for(i=0;i<n;i++) { printf("%d\n",num[i]); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 352KB, 提交时间: 2020-07-20
#include "stdio.h" #include "string.h" #include "stdlib.h" #include "ctype.h" int main() { int num = 0; scanf("%d",&num); char* str[num][100]; char str1[7] = {0}; int out[num]; int tempNum = 0; //char* str = (char*)malloc(num*100); for(int i = 0;i<num;i++) { //fgets(str[i],100,stdin); scanf("%s",str[i]); char* tempstr = str[i]; int len = strlen(str[i]); //printf("len:%d\n",len); sprintf(str1,"%s",&tempstr[len-6]); //str[6] = '\0'; //printf("str1:%s\n",str1); out[i] = atoi(str1); //printf("out[%d]:%d\n",i,out[i]); } for(int j = 0;j<=num-2;j++) { for(int l = j+1;l<=num-1;l++) { if(out[j]>out[l]) { int temp = out[j]; out[j] = out[l]; out[l] = temp; } } } for(int m = 0;m<num;m++) { printf("%d\n",out[m]); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-03-05
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> int getnum(char *str) { if (str == NULL) return -1; unsigned int len = strlen(str); if (len < 7) return -1; return atoi(str + len - 7); } int sort_arry(int buf[], unsigned int size) { if (buf == NULL) return -1; unsigned int i; for (i = 1; i < size; i++) { unsigned int j = i; int val = buf[i]; while (j > 0 && val < buf[j - 1]) { buf[j] = buf[j - 1]; j--; } buf[j] = val; } return 0; } int print_arry(int buf[], unsigned int size) { if (buf == NULL) return -1; unsigned int i; for (i = 0; i < size; i++) { printf("%d\n", buf[i]); } return -1; } int main(int argc, char *agrv[]) { int row = 0, count = 0; char s[1024] = {0}; int buf[100] = {0}; scanf("%d\n", &row); while (fgets(s, sizeof(s), stdin) != NULL) { buf[count++] = getnum(s); } sort_arry(buf, row); print_arry(buf, row); return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-03-08
#include<stdio.h> #include<string.h> #include <stdlib.h> int cmpfunc (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int main() { int n; scanf ("%d",&n); char str[n][101]; int len[n]; int num[n]; for(int i = 0;i < n;i++) { scanf("%s",str[i]); len[i] = strlen(str[i]); } for(int i = 0;i< n;i++) { int ans=0; for(int j = 0;j < 6;j++) { ans = ans*10 + str[i][len[i]-6+j]-'0'; } num[i]=ans; } qsort(num, n, sizeof(int), cmpfunc); for(int i = 0;i < n;i++) { printf("%d\n",num[i]); } return 0; }