执行在外循环的第一次迭代后停止
Execution stops after the first iteration of the outter loop
var array = [5,3,4,1]
for(var x = 0; x < array.length; x++){
for(var y = array.length - 1; y >= x; y--){
if(array[x] > array[y]){
var temp = array[y];
array[y] = array[x];
array[x] = temp;
}
}
}
console.log(array);
//Output : [1,3,4,5]
我知道循环是为了交换循环,如果 x 大于 y,循环本质上是交换两个值。
当 x =0 时,结果[1,3,4,5]
,但为什么一旦 x = 1,任何内容都没有变化,依此类推?辅助 for 循环不应该通过其迭代运行并继续交换值,直到第一个循环达到 array.length
(4)?
编辑:关于我的思维过程的更多信息:第一次迭代后输出为 [1,3,4,5],但是当它迭代到 x = 1 时呢?在这一点上,x[1] = 3,对吗?当 y 从 5 递减到 4 再到 3 时,if 语句失败,但 3> 1,所以我认为输出更改为 [3,1,4,5]。此时 x 迭代到 x[2],即 4,输出变为 [4,3,1,5],最后,x[3] = 5,其中不可能进一步交换
不明白你所说的进程停止是什么意思。 以下是代码的修改版本
var array = [5,3,4,1]
var count = 0, swap = 0;
for(var x = 0; x < array.length; x++){
for(var y = array.length - 1; y >= x; y--){
count++;
if(array[x] > array[y]){
swap++;
var temp = array[y];
array[y] = array[x];
array[x] = temp;
}
}
}
console.log('count', count, 'swap', swap,'array',array);
计数 10 交换 1 阵列 [1, 3, 4, 5]
该代码是从最小到最大的简单交换排序算法。 在第一次交换之后,数组将完全排序,因此不会发生进一步的交换。 循环确实运行了 10 次。
相关文章:
- 循环中的切换脚本只适用于第一次迭代
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- 执行在外循环的第一次迭代后停止
- 此代码在第一次迭代时给出 0 作为高度和宽度,第二次给出正确的尺寸
- for循环只迭代一次
- 不读取 while 循环中表单元素第一次迭代 ASP.NET
- 如何识别 for.in 循环中的第一次迭代
- setTimeout在Internet Explorer中的第一次迭代后不会触发
- 检查地图中是否有第一次迭代的方法
- for 循环仅在第一次迭代时执行
- for循环在第一次迭代时停止
- Javascript mouseover/mouseout动画仅适用于第一次迭代
- 在第一个数组的下一次迭代之前,遍历一个数组并连接另一个数组的所有值
- 当我将src附加到图像时,每N秒迭代一次
- 当试图从元素中删除类时,For循环只迭代一次
- 每个函数在XML中迭代两次
- 对对象数组只迭代一次
- Javascript - for循环只迭代一次
- 迭代一次的行值并添加
- JavaScript在同一循环中每x次迭代一次循环