Javascript 执行在outter循环的第一次迭代后停止 var数组=[5,3,4,1] 对于(var x=0;x=x;y--){ if(数组[x]>数组[y]){ var-temp=数组[y]; 数组[y]=数组[x]; 数组[x]=温度; } } } console.log(数组); //输出:[1,3,4,5]

Javascript 执行在outter循环的第一次迭代后停止 var数组=[5,3,4,1] 对于(var x=0;x=x;y--){ if(数组[x]>数组[y]){ var-temp=数组[y]; 数组[y]=数组[x]; 数组[x]=温度; } } } console.log(数组); //输出:[1,3,4,5],javascript,arrays,for-loop,scope,iteration,Javascript,Arrays,For Loop,Scope,Iteration,我知道循环是用来交换的,如果x大于y,循环本质上是交换两个值 [1,3,4,5]是x=0时的结果,但为什么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],x[

我知道循环是用来交换的,如果x大于y,循环本质上是交换两个值

[1,3,4,5]
是x=0时的结果,但为什么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],x[2]为4,输出变为[4,3,1,5],最后,x[3]=5,此时不可能进行进一步交换

我不明白您所说的过程停止是什么意思。以下是代码的修改版本

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]
var数组=[5,3,4,1]
var计数=0,掉期=0;
对于(var x=0;x=x;y--){
计数++;
if(数组[x]>数组[y]){
swap++;
var-temp=数组[y];
数组[y]=数组[x];
数组[x]=温度;
}
}
}
log('count',count',swap',swap,'array',array);
计数10交换1数组[1,3,4,5]


该代码是一个从最小到最大的简单交换排序算法。在第一次交换之后,数组被完全排序,因此没有发生进一步的交换。循环确实运行了10次。

是什么让你认为它没有一直运行?(在这个特定的示例中,不必这样做,因为数组是在第一次迭代时排序的…)我的错误。我知道它一直在运行,我只是不明白为什么在第一次迭代后什么都没有改变。什么都没有改变,因为没有任何东西通过if语句。通读一些关于编程的教程,这类东西很早就会出现。很抱歉这么密集,但是为什么没有进一步的交换呢?在第一次迭代之后,输出是[1,3,4,5],但是当它迭代到x=1时会怎么样?此时,x[1]=3,对吗?当y从5减到4,再减到3时,if语句失败,但3>1,因此我认为输出更改为[3,1,4,5]。当x=1时,y={3,2,1}(不是{3,2,1,0})和数组[y]={5,4,3}(同样,也不是{5,4,3,1}),因为当yvar 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);