选择排序算法不起作用......警告......我是新手

时间:2012-04-26 04:17:22

标签: javascript algorithm selection

我的算法不起作用,我是所有算法和javascript的新手,我似乎无法解决为什么它不起作用。

这是阵列(23,19,35,12,30)

最大值= 0

这就是我所拥有的......

For K= 0 to n – 2 

  MAX = 0

      For j = 0 to n – k - 2

                         If item[j] > item[MAX]
                         MAX = item[j] 

                  end if
          end for 
      swap n - k - 2 with item[MAX] 
   end for
end SelectionSort

我哪里出错了?谢谢!!!!

另外,如果有人能告诉我如何在跟踪表中使用它,我会非常高兴!

亲切的问候 克雷格

2 个答案:

答案 0 :(得分:1)

在此表达式中使用max导致问题项[MAX],它将是j。请仔细考虑,然后再次尝试,选择排序Demo

     var arr = new Array (23, 19, 35, 12, 30);         
     temp = 0;

     for( k = 0; k < arr.length-1; k++)
     {

        for( j = k+1;  j < arr.length; j++)
        {

            if (arr [k] > arr [j])
            {

                 temp = arr[k];
                 arr[k] = arr[j];
                 arr[j] = temp;
            }
         }
     }

for(k = 0; k < arr.length; k++)
    alert(arr[k]);​

答案 1 :(得分:0)

我相信你的代码中有一些错误。首先,两个地方的上限应该是n - k -1而不是n -k-2(因此如果已经是最大值,则不要移动索引为n-k-1的元素)。您还应该将项目[n-k-1]与项目[MAX]交换(不是您编写的索引)。我相信这样的事情应该有效:

 For K= 0 to n – 1 
   MAX = 0
   For j = 0 to n – k - 1
      If item[j] > item[MAX]
        MAX = item[j] 
      end if
   end for 
   swap item[n - k - 1] with item[MAX] 
  end for
end SelectionSort