选择排序帮助

时间:2010-01-30 20:45:33

标签: java sorting

嗨我想知道如果你有一个整数数组,你将如何使用选择排序按降序排序。我知道如何按升序进行,但我不知道如何按降序排列。

谢谢!

5 个答案:

答案 0 :(得分:2)

Selection sort是一种比较排序。要按相反顺序排序,只需反转比较。

换句话说,不要使用>,而是使用<

答案 1 :(得分:2)

选择排序是一种比较排序技术(您使用比较运算符来获取可以升序或降序的顺序)。因此,要获得降序,只需将比较运算符从<翻转到>

您可能希望在selection sort上阅读更多内容。

我希望这会有所帮助。

欢呼声

答案 2 :(得分:1)

选择排序很简单,你看第一个元素,如果它是&gt; element [i]然后你交换它。例如:

8 5 1 9

从元素8开始..查看下一个元素,将其缩小,然后交换它:

5 8 1 9

现在看看下面的元素1,它也小于5个交换位置

1 8 5 9

最后9&gt; 1移动到下一个元素(8)并比较......继续这样做直到你有

1 5 8 9

现在通过降序进行相反的排序是相同的算法,但你只需检查它是否是&gt;而不是&lt;。

例如,

1 9 5 8

从1开始,是9> 1,是的,所以交换它:

9 1 5 8

继续......移动到第二位是1&lt; 5,是的,交换它:

9 5 1 8

继续这样做,直到你有

9 8 5 1

这里有一些伪代码,它不是Java而是C但是应该帮助你理解如果你可以实现提升的选择排序,那么你可以用它来降序:

 while(pTemp2 != NULL)
   {   
       //we implement a selection sort 
       //check if incoming node->datum with each node in the list
       //swap values if >
      if (pTemp2->datum > pTemp->datum)
         {
         //swap the values
         int temp = pTemp->datum;
         pTemp->datum = pTemp2->datum;
         pTemp2->datum = temp;
         }
         //advance the pointer
      pTemp2=pTemp2->next;
   }

答案 3 :(得分:0)

你按照升序执行的方式,除了你总是选择最大的元素而不是最小的元素。

答案 4 :(得分:0)

如果您了解selection sort的工作原理,那么按降序排序应该是微不足道的。最好再次阅读你的笔记/书籍,并按照选择排序的实际工作方式进行操作。

要按升序排序,请在每个步骤中选择最小元素。要按降序排序,只需选择最大元素。因此,在第一步中,您选择最大的,在第二步中,您选择下一个最大的,依此类推,产生一个从最大到最小的列表。