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;iarray[length]
(幸运的是,这不会影响排序,但最好是正确的)。for(i=0;i
在这里,您永远不会检查邻接值是否已排序…或者左值大于右值…(尽管我认为排序函数的for循环中的长度是数组长度)
回顾一个简单的冒泡排序算法,然后尝试
在C中引用此算法假设:数组未按预期排序。
for(i=0;i
你从哪里得到长度
,我看不到它在任何地方被定义了,所以你的for循环应该是排序而不是运行,或者将使用globallength
属性,并将使用该数字而不是你想要的任何数字。你的排序并不是比较元素看它们是否需要交换。它只是总是交换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;
}