这是一道java题目,为什么输出是5 6 7 8 9.循环的执行过程是怎么样的?
4个回答
展开全部
int a[] = {5,9,6,8,7};
int i,j;
for(i = 0;i<a.length-1;i++){//1层循环取元素
int k = i;
for(j=i;j<a.length;j++){//二层循环,取剩余部分(除去前一个元素)
if(a[j]<a[k]){//如果前一个元素<后面的元素
k=j;//交换下标
}
}
//冒泡排序 主题思想就是临时变量temp永远代表最小的值,然后将这个最小值赋给下标较小的
int temp = a[i];
a[i] = a[k];
a[k]= temp;
}
for(i=0;i<a.length;i++){
System.out.println(a[i] + " ");
}
System.out.println();
}
展开全部
冒泡法排序,外层就是循环a数组中元素,而内层循环每次循环会减少一个,因为内层循环循环完后会记录数组中最小的数的下标并赋给k,然后把数组中a[i]和a[k]进行交换,这样第一次外层循环结束第0个元素就是最小的,第二层循环结束第1个元素就是次小的直到全部循环结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个for循环已经将数组从小到大进行了排序,排序的思路就是循环拿第i个和i以后的元素去比较,如果小就说明后面的比前面的小,然后就把他们换一下位置
更多追问追答
追问
不懂啊。你看后面输出,还有第二个for循环。。。
追答
后面那个for循环就是把数组打印出来啊,这个你不懂?就是一个个输出而已,没什么东西……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选择排序:
先找出从a[0]开始5个数中最小的一个,记录下标k,将最小的一个和a[0]元素交换,
再找出从a[1]开始剩余4个数中最小的一个,记录下标k,将最小的一个和a[1]交换,
再找出从a[2]开始剩余3个数中最小的一个,记录下标k,将最小的一个和a[2]交换,
再找出从a[3]开始剩余2个数中最小的一个,记录下标k,将最小的一个和a[3]交换,
还剩一个数他肯定就最大了,不需要交换。
先找出从a[0]开始5个数中最小的一个,记录下标k,将最小的一个和a[0]元素交换,
再找出从a[1]开始剩余4个数中最小的一个,记录下标k,将最小的一个和a[1]交换,
再找出从a[2]开始剩余3个数中最小的一个,记录下标k,将最小的一个和a[2]交换,
再找出从a[3]开始剩余2个数中最小的一个,记录下标k,将最小的一个和a[3]交换,
还剩一个数他肯定就最大了,不需要交换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |