描述
给定一任意字典序(长度为n)与字符串,对此字符串(长度为k)应用字典序进行升序排序.
如果不在字典序中的字符,则使用ASCII值最为字典序.
0 < n < m
0 < k < 256
m 一般是256,大小为 128 << sizeof(char),根据平台而异.
例如有字典序1 6 5 4 3 2 0 c b w
那么对应的优先级 1 2 3 4 5 6 7 8 9 10
未出现的字典序 a b c d
那么对应优先级 97 98 99 100
优先级越小字符越靠前(左)
输入描述
第一行输入n,k
第二行输入字典序
第三行输入字符串
输出描述
输出排序后的字符串
用例输入 1
9 12
9 5 1 3 7 4 2 6 8
85462afegw01
用例输出 1
5142680aefgw
#include<stdio.h>
int main(){
int n,k,num=0,t;
scanf("%d %d\n",&n,&k);
char a[n],b[k];//字典 和 要排序的字母数字
for(int i=0;i<n;i++){
scanf("%c ",&a[i]);
}//获得字典
for(int i=0;i<k;i++){
scanf("%c",&b[i]);
}//获得乱序字母数字
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
if(a[i]==b[j]){//查找乱序中是否出现字典中的 是,则将其利用冒泡放到前面
for(int m=j;m>num;m--){
t=b[m];
b[m]=b[m-1];
b[m-1]=t;
}
num++;//记录已经有序了多少位
}
}
}