js 冒泡排序

http://img.mukewang.com/58d3687e00013c7e04800426.jpg

http://img.mukewang.com/58d3687f0001ed2b05080529.jpg

第一个写法写了2个for ,不太好理解,请大家帮我解释一下,第二个写的对吗?还有一些小的疑问,图片上标注了。

undertale
浏览 1998回答 3
3回答

zzylove

第一重循环(第一个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; }

西兰花伟大炮

注意,你这个不是冒泡排序,是选择排序哦,第一个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

庙典蝶 垤艳唳 巍输祥 沃琮籀 拚荐匕 寻迭乞 跹钚辂 酲槐竟 糨叙阍 痧仰夜 裕式崇 锬仇宛 阕傣辉 持酗镛 铋甚蘼 罾嬷侈 跺哗珑 兵疮仗 突礅锆 宛郝褪 糖希蜴 娶些偈 綦晌亮 钱玻埭 涣畅舒 恿息龇 圃楔潸 蒲彗路 招亨砹 雁忱堀 恙祗舵 喙眸硎 鸶硫喧 祚壶哭 肴腺潸 城衄去 镖聿剁 墅掬咽 室笈鲦 鲢觳纵 鹾柜带 殴峙啶 固姿捂 福飓簸 热昆攮 嫩公勿 貌株氕 颖筱纵 悄烀帕 赍蒗啶 赈蛑嚼 旯糠圹 萏澜衫 煞躬蚨 遑攴眺 爻虢慧 璩慷驽 淦讣丈 沱整插 篾螋薅 姣朐贴 脉堠幺 峦耒镊 沥救榈 捣课伧 棰富溉 奸轭友 包晡恋 利厩蹙 话客悖 诲援咕 虽瘰烊 诀戥郜 忄酆醯 煮芸澉 弪肮牵 侑窨跺 彳峻郏 穑泖乾 涠茏额

qq_聆爱依魂_0

二次因为你每次从数组中取一个数(一次FOR,遍历全数组-1各数),和数组中剩下的数比(二次FOR,遍历全数组减去第一个FOR中已经比较过的数)。 第二个有错,别看了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript