c语言冒泡法排序,其中第九行if(a[j]>a[j+1])开始,为什么不是if(a[i]>a[i+1]) 呢
#include<stdio.h>intmain(){inti,j,t,a[10];printf("Pleaseinput10integers:\n");for(i=0;...
#include <stdio.h>
int main()
{int i,j,t,a[10];
printf("Please input 10 integers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++) /* 冒泡法排序 */
for(j=0;j<10-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交换a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
} 展开
int main()
{int i,j,t,a[10];
printf("Please input 10 integers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++) /* 冒泡法排序 */
for(j=0;j<10-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交换a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
} 展开
3个回答
展开全部
这是冒泡排序算法决定的。冒泡排序算法共需要n趟比较(n为元素个数),每趟两两比较相邻元素。外循环变量i决定趟数(这里i=0...9),内循环变量j控制每趟比较的元素(这里j=0...9-i),因此是if(a[j]>a[j+1])开始。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里两层循环的意思是
i那一层是用来管理冒泡的长度
比如第一次冒泡比较9次,最小的数到了最后一个
第二冒泡你就不需要再看最好一个了,只需要再比较8次就好了,i就是用来记录这个的
j那一层循环才是真正的冒泡算法,比较,交换。
i那一层是用来管理冒泡的长度
比如第一次冒泡比较9次,最小的数到了最后一个
第二冒泡你就不需要再看最好一个了,只需要再比较8次就好了,i就是用来记录这个的
j那一层循环才是真正的冒泡算法,比较,交换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然不是,你的冒泡法是把最大的沉下去,若if(a[i]>a[i+1])这样的话,那不在内层循环都是比较a[0]和a[1](第一次循环),而且最后,也就是把最大的数沉到最下面啦!并没有完成排序
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询