题目描述:
Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。
Java实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String in = sc.nextLine();
char[] tmp = in.toCharArray();
Arrays.sort(tmp);
System.out.println(String.valueOf(tmp));
}
}
}
C实现:
#include <stdio.h>
#include <string.h>
#define N 1025
void insertionSort(char a[], int len) {
for (int i = 1; i < len; i++) {
int j = i;
char t = a[i];
for (; j > 0 && a[j-1] > t; j-- ) {
a[j] = a[j-1];
}
a[j] = t;
}
}
int main() {
char a[N];
while (gets(a) != 0) {
int len = strlen(a);
insertionSort(a, len);
for (int i = 0; i < len; i++) {
printf("%c", a[i]);
}
printf("\n");
}
}
知识点:
- 读题后发现是字符串根据ASCII码值大小进行从小到达排序
- 插入排序的思想是把比当前的值赋给另一个变量,把比它大的往后移动,把当前值放到它应该在的位置