第一个写法写了2个for ,不太好理解,请大家帮我解释一下,第二个写的对吗?还有一些小的疑问,图片上标注了。
3 回答
已采纳
zzylove
TA贡献9条经验 获得超1个赞
第一重循环(第一个for)是为了找到第i小的数,比如当i=0时,找的是第一小的数,放在数组最前面,当i=1时,找除了arr[0]的最小的数也就是第二小的数,以此类推。第二重循环(第二个for)是为了遍历数组-i个数,依次和他们比,比谁更小,最小的放到i这个位置。
第二个
我改了一下,可以这么写“var len = arr.length,j,temp;”这个是冒泡排序,每次最外面的循环一次,就会把数组中最大数排到最后
function bubbleSort(arr){ var len = arr.length,j,temp; var i=len; while(i>0){ for( j = 0; j < len - 1;j++){ if(arr[j] > arr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } i--; } return arr; }
西兰花伟大炮
TA贡献376条经验 获得超318个赞
注意,你这个不是冒泡排序,是选择排序哦,第一个for的i = 0是数组的第1个元素,而第二个for是用来表示从比i大1的位置开始循环。来把剩下的元素与i进行比较,当找到就进行交换,循环结束就让i加一,然后j仍然比i大一,第二个那里不是i,是len--;
<script> function bubbleSort(arr){ var len = arr.length,j; while(len>0){ for (var j = 0;j < len - 1;j++) { if(arr[j] > arr[j+1]){ var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } len--; } return arr; } arr1 = [4,6,1,5,8,7,9,2]; console.log(bubbleSort(arr1))
<script> function bubbleSort(arr){ var len = arr.length; for(var i = 0; i < len;i++ ){ for(var j = 0; j < len - i - 1;j++){ if(arr[j] > arr[j+1]){ var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } return arr; } var array = [10,9,8,7,6,5,4,3,2,1]; console.log(bubbleSort(array));/*每一次外层循环把当前数列中最大值排到最后, 并减少数组长度,就不再遍历最后的最大,每内层循环一遍就会找出一个当前数列最大的值*/
这才是冒泡排序
慕的地6079101
TA贡献3593条经验 获得超0个赞
庙典蝶
垤艳唳
巍输祥
沃琮籀
拚荐匕
寻迭乞
跹钚辂
酲槐竟
糨叙阍
痧仰夜
裕式崇
锬仇宛
阕傣辉
持酗镛
铋甚蘼
罾嬷侈
跺哗珑
兵疮仗
突礅锆
宛郝褪
糖希蜴
娶些偈
綦晌亮
钱玻埭
涣畅舒
恿息龇
圃楔潸
蒲彗路
招亨砹
雁忱堀
恙祗舵
喙眸硎
鸶硫喧
祚壶哭
肴腺潸
城衄去
镖聿剁
墅掬咽
室笈鲦
鲢觳纵
鹾柜带
殴峙啶
固姿捂
福飓簸
热昆攮
嫩公勿
貌株氕
颖筱纵
悄烀帕
赍蒗啶
赈蛑嚼
旯糠圹
萏澜衫
煞躬蚨
遑攴眺
爻虢慧
璩慷驽
淦讣丈
沱整插
篾螋薅
姣朐贴
脉堠幺
峦耒镊
沥救榈
捣课伧
棰富溉
奸轭友
包晡恋
利厩蹙
话客悖
诲援咕
虽瘰烊
诀戥郜
忄酆醯
煮芸澉
弪肮牵
侑窨跺
彳峻郏
穑泖乾
涠茏额
qq_聆爱依魂_0
TA贡献5条经验 获得超2个赞
二次因为你每次从数组中取一个数(一次FOR,遍历全数组-1各数),和数组中剩下的数比(二次FOR,遍历全数组减去第一个FOR中已经比较过的数)。 第二个有错,别看了
添加回答
举报
0/150
提交
取消