我又来了 新手求教
以下两个C有什么不同主要是for循环部分
#include<stdio.h>
#include<string.h>
int main (void)
{
int i = -1, j, a1, te;
char str[127];
printf("input the string: \n");
do
{
i ++;
str[i] = getchar();
}
while (str[i] != '\n');
str[i] = '\0';
a1 = strlen(str);
for (j = 0;j < a1 - 2;j ++)
{
for (i = 0;i < a1 - i - 1;i ++)
{
if (str[i] > str[i + 1])
{
te = str[i];
str[i] = str[i + 1];
str[i + 1] = te;
}
}
}
printf("\nResult:%s",str);
}
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[128];
int i = -1, len, temp, j;
printf("input the string: \n");
do
{
i++;
str[i] = getchar();
} while (str[i] != '\n');
str[i] = '\0';
len = strlen(str);
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (str[i] > str[j])
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
printf("\nResult:%s\n", str);
return 0;
}
[解决办法]
两个排序思想是不一样的:
第一个:是每次从头开始扫描,每次比较的是 i 和 第 i+1个数,保证 str[i] < str[i +1]
第二个:先定 i, 然后和 j 比较, 就是冒泡,保证i 是 j---到----n中的最小值
[解决办法]
一个是典型的冒泡排序,一个是最基本的排序,复杂度有差别,冒泡快一点