慕妹9005614
2017-10-05 21:22
我有点懵逼,第一个for循环中i!=9,i是个位数还是十位数?第二个for循环中控制每趟比较的最大下标,下标是指个位数么?第三个for循环中控制相邻元素比较的下标,这个又是什么意思?谁能给我解释解释?
i不等于9的意思是把数组arr[9]输出时后面少一个逗号而已。下面的两个for嵌套循环是为了实现冒泡排序,冒泡排序就是把数组下标最大的那个项不和前一项进行对比,把数组中大的数不断向前交换,不段这样只用数值下标数-1次循环就可以把数组变成有序的数组。
列如:arr[0]=5; arr[1]=6; arr[2]=9; arr[3]=8;
冒泡循环第一次:arr[0]=9; arr[1]=5; arr[2]=6; arr[3]=8;
冒泡循环第二次:arr[0]=9; arr[1]=8; arr[2]=5; arr[3]=6;
冒泡循环第三次:arr[0]=9; arr[1]=8; arr[2]=6; arr[3]=5;
以上只用4-1次就把数组排序成有序数组了。
下标就是 {arr[]=1;}这个[]里的数值,主要是用来标记该元素在数组中的位置。
没懂呢
正好我也不会。
感谢~
for循环里i=8开始是因为后面j+1就是第十个数据了{0…8 9(9就是j+1)}
第二个问题里用j而不用i,这个是因为只有j才是数据比较用的字符,而i只是起一个限定循环次数的作用。运行过程大概是
94 99---1
95 99---2
93 99---3
92 99---·4
91 99---5
90 99---6
88 99---7
97 99---8
89 99---9(j+1)
我先说一下我理解的下面的那两个for循环是什么样子吧,
for(i=8; i>=0; i--)
{
for(j=0;j<=i;j++)
{
if(arr[j]>arr[j+1])
,我的理解是从数组下标是8的数据开始,也就是数组的倒数第二个数据97,然后第二个for循环选取的是数组下标是0的数据,也就是99。将这两个数据进行比较,如果符合if条件则交换位置
整个运行过程应该是这个样子
:99 94 95 93 92 91 90 88 97 89
97 88 90 91 92 93 95 94 99 89
97 99 88 94 90 95 91 93 92 89
92 97 93 99 88 91 94 95 90 89
90 92 95 97 93 94 91 99 88 89
88 90 92 99 91 95 94 97 93 89
88 93 90 97 92 94 95 99 91 89\\这里出现循环 同下备注的
88 91 93 99 90 95 94 97 92 89
88 92 91 97 93 94 95 99 90 89
88 90 92 99 91 95 94 97 93 89
88 93 90 97 92 94 95 99 91 89\\循环
C语言入门
926028 学习 · 20793 问题
相似问题