首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

小弟我又来了 新手求教

2012-04-16 
我又来了新手求教以下两个C有什么不同主要是for循环部分#includestdio.h#includestring.hint main (vo

我又来了 新手求教
以下两个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中的最小值
[解决办法]
一个是典型的冒泡排序,一个是最基本的排序,复杂度有差别,冒泡快一点

热点排行