利用冒泡排序法和选择排序法对字符排序
对字符串中的字符进行排序所依据的是ASCII码进行排序。
任意输入一串字符,通过ASCII码对其中的字符进行排序。
一、选择排序法
//利用选择排序法对字符串中的字符进行排序
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
char names[SIZE];
char dates[SIZE];
char *ptchar=NULL;
fgets(names,SIZE,stdin);
if (ptchar=strchr(names,'\n'))//这个if和else语句是用来优化fgets函数的。
{
*ptchar='\0';
}
else
{
while (getchar()!='\n')
{
continue;
}
}
for (int n=0;n<strlen(names);n++)//这里n<SIZE也是可以的,只不过会增加任务量。
{
dates[n]=names[n];
}
int out_i;
int in_i;
for (out_i=0;out_i<strlen(dates)-1;out_i++)//strlen()表示一个字符串不含空字符的长度,我需要比较的也正是这部分。
{
for (in_i=out_i+1;in_i<strlen(dates);in_i++)
{
if (dates[out_i]>dates[in_i])
{
char agent;
agent=dates[out_i];
dates[out_i]=dates[in_i];
dates[in_i]=agent;
}
}
}
printf("print the original characters :%s\n",names);
printf("print the changed characters :%s\n",dates);
return 0;
}
打印结果如下:
I love Micy very much
print the original characters :I love Micy very much
print the changed characters : IMcceehilmoruvvyy
二、冒泡排序法
//利用冒泡排序法对字符串进行排序
#include <stdio.h>
#include <string.h>
#define SIZE 80
int main(void)
{
char names[SIZE];
char dates[SIZE];
char *ptchar=NULL;
fgets(names,SIZE,stdin);
if (ptchar=strchr(names,'\n'))
{
*ptchar='\0';
}
else
{
while (getchar()!='\n')
{
continue;
}
}
for (int n=0;n<strlen(names);n++)
{
dates[n]=names[n];
}
int out_i;
int in_i;
for (out_i=0;out_i<strlen(dates)-1;out_i++)
{
for (in_i=0;in_i<strlen(dates)-1-out_i;in_i++)
{
if (dates[in_i]>dates[in_i+1])
{
char agent;
agent=dates[in_i];
dates[in_i]=dates[in_i+1];
dates[in_i+1]=agent;
}
}
}
printf("print the original characters :%s\n",names);
printf("print the changed characters :%s\n",dates);
return 0;
}
打印结果如下:
I love Micy very much
print the original characters :I love Micy very much
print the changed characters : IMcceehilmoruvvyy

浙公网安备 33010602011771号