任意输入一个字符串,将其中的字符按照ASCII码值从小到大重新排序
例如:
给出:dbca
结果:abcd
这次使用非比较排序来对字符串进行重新排序
ASCII码的值为0~255,那么我们可以开辟一个大小为256的数组,用它来保存字符出现的次数,然后根据array的值为字符出现的次数,array的下标则为该字符的ASCII值,只要根据array的值和array的下标输出就好。
#include <stdio.h>
#include <string.h>
//记录字符出现的次数
void CharSort(int* array,char* str,int size)
{
int i = 0;
for(i = 0; i < size; i++)
{
array[str[i]]++;//字符出现的次数
}
}
void Print(int* array, int size)
{
int i = 0;
for(i = 0; i < 255; i++)
{
while(array[i]--)
printf("%c",i);
}
printf("\n");
}
int main()
{
int array1[255]={0};
char* str = "dbcdsfgdfga";
int size = strlen(str);
CharSort(array1,str,size);
Print(array1,size);
return 0;
}
运行结果如下: