题目描述:(针对于数字进行排序同样也是可以适用的)
【问题描述】
编写一个程序,从键盘接收一个字符串(长度不超过20),采用插入排序,按照字符顺序从小到大进行排序,最后输出排序后的字符串。
【输入形式】 输入一行字符串,长度不超过20。
【输出形式】 输出排序后的字符串。
【样例输入】
H2e3L*Lo,Wor#Ld.
【样例输出】
*,.23HLLLWdeoor
分析
解决该题的关键是要学会插入排序的方法!
插入排序的关键代码
后续我会更新出比较容易理解的选择排序的函数!!!(让我先消化消化),哈哈哈
for(j=1;j<x;j++){
for(i=0;i<j;i++){
if(a[i]>a[j]) break;
}
int t;
for(;i<=j;i++){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
其排序的原理可以利用此图来解释:
如图,开始数的顺序为:23 12 33 20 45,排序后为12 20 23 33 45;
代码解析
#include <stdio.h>
#include <string.h>
int main()
{
char a[21];
scanf("%s",a);
int x;
x=strlen(a);
int i,j;
for(j=1;j<x;j++){
for(i=0;i<j;i++){
if(a[i]>a[j]) break;
}
int t;
for(;i<=j;i++){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
printf("%s",a);
return 0;
}