错误做法:
你的大概格式我明白了,你是想调用冒泡法进行排序,可是你的冒泡法从第二个for函数就已经开始出错了。
你的第一个图中,
一次for循环只能确定最后一位是最小
你还得循环去确定倒数第二位
。。。以此类推
第二个图中,
内层循环每循环一次确定了第i位的顺序。
第一次循环确定了第1位最大,
然后第二位
。。。
修改如下,供参考:
#include <stdio.h>
#include <string.h>
void fun(char s[], int n)
{
char ch;
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (s[j] > s[j + 1]) {
ch = s[j];
s[j] = s[j + 1];
s[j + 1] = ch;
}
}
}
}
int main()
{
char s[128];
scanf("%[^\n]", s);
fun(s, strlen(s));
printf("%s", s);
return 0;
}