Javascript 为什么';难道这不该停止吗?

Javascript 为什么';难道这不该停止吗?,javascript,while-loop,infinite,Javascript,While Loop,Infinite,由于某些原因,我无法使此代码正确排序。我正在替换顺序错误的编号,以便生成一个有序列表 var unsortedArray=新数组(1,2,5,4); var sortedArray=未排序的Darray; var tempValue=0; 函数已排序(数组) { 对于(i=0;i数组[i+1]) { 返回false; } } 返回true; } 函数排序(数组) { while(isSorted(数组)==false) { 对于(i=0;i

由于某些原因,我无法使此代码正确排序。我正在替换顺序错误的编号,以便生成一个有序列表

var unsortedArray=新数组(1,2,5,4);
var sortedArray=未排序的Darray;
var tempValue=0;
函数已排序(数组)
{
对于(i=0;i数组[i+1])
{
返回false;
}
}
返回true;
}
函数排序(数组)
{
while(isSorted(数组)==false)
{
对于(i=0;i
这里的while循环应该在数组排序时停止,但这永远不会发生


您有一个无止境的循环,因为以下代码:

for (i = 0; i < length; i++)
    {
        var tempValue = array[i];

        array[i] = array[i+1];
        array[i+1] = tempValue;
    }
for(i=0;i
不对数组进行排序

为什么不改用这个呢?

试试这个

只有当
a[n]
小于
a[n-1]
时,它才会交换元素

while (isSorted(array) == false)
{
    for (i = 0; i < length-1; i++)
    {
      if(array[i]>array[i+1]){
             var tempValue = array[i];
             array[i] = array[i+1];
             array[i+1] = tempValue;
       }
}
while(isSorted(数组)==false)
{
对于(i=0;i数组[i+1]){
var tempValue=数组[i];
数组[i]=数组[i+1];
数组[i+1]=tempValue;
}
}
它还将for循环更改为for(var i=0;i

否则,在数组末尾,您将访问未定义的
array[length]
(幸运的是,这不会影响排序,但最好是正确的)。

for(i=0;i
在这里,您永远不会检查邻接值是否已排序…或者左值大于右值…(尽管我认为排序函数的for循环中的长度是数组长度)

回顾一个简单的冒泡排序算法,然后尝试


在C中引用此算法假设:数组未按预期排序。
for(i=0;i
你从哪里得到
长度
,我看不到它在任何地方被定义了,所以你的for循环应该是排序而不是运行,或者将使用global
length
属性,并将使用该数字而不是你想要的任何数字。你的排序并不是比较元素看它们是否需要交换。它只是总是交换em,不管他们是否需要。因此数组永远不会进入排序状态。我尝试不使用排序方法,而是尝试使用自己的方法对数字进行排序。您可以使用自己的逻辑添加一个比较函数,如
arr.sort(函数(a,b){if(a>12)返回a;返回b;});
while (isSorted(array) == false)
{
    for (i = 0; i < length-1; i++)
    {
      if(array[i]>array[i+1]){
             var tempValue = array[i];
             array[i] = array[i+1];
             array[i+1] = tempValue;
       }
}
for (i = 0; i < length; i++)
    {
        var tempValue = array[i];

        array[i] = array[i+1];
        array[i+1] = tempValue;
    }