2013-05-07 93 views
0

我有这段代码,需要一些帮助来计算交换次数。我想我需要一个for循环,它是标记,但我不退出了解如何提取交换计数。提前致谢。Java选择排序交换计数

public class Selection 
{ 
    public static void SelectionSort (int [ ] num, int howmany) 
    { 
     int i, j, first, temp; 
     int comparecount = 0; 
     int swapcount = 0; 

     for (i = num.length - 1; i > 0; i--) 
     { 
      first = 0; 
      for(j = 1; j <= i; j ++) 
      { 
       comparecount++; 

       if(num[ j ] < num[ first ])   
        first = j; 
      } 
      temp = num[ first ]; //need to count swaps ??? 
      num[ first ] = num[ i ]; 
      num[ i ] = temp; 
     } 

     System.out.print(comparecount); 
     System.out.print(swapcount); 
    } 
} 
+0

你能不能只是增加'在您的评论swapcount'? – Breavyn 2013-05-07 00:53:41

+0

另外'int howmany'用在哪里?为什么在那里? – Breavyn 2013-05-07 00:58:06

+0

我是通过它的东西,并没有删除它 – 2013-05-07 01:07:38

回答

0

你真的已经回答了你自己的问题。你说你想要计算交换,然后把交易物品放在哪里,所以只需在那里增加swapcount。

当你正在使用的打印,而不是给println这是使你的数字显示错误,出现并排的和不可区分边相互

+0

至于在评论swapcount我得到122549哪个,我不认为是正确的。 – 2013-05-07 01:11:19

+0

你排序的元素有多少?它确实可能是正确的。记住选择排序是N^2算法,所以如果你有超过400个元素,它很可能需要这么多。 – greedybuddha 2013-05-07 01:18:29

+0

它只有50个元素。 – 2013-05-07 02:46:17