嗨我想知道如果你有一个整数数组,你将如何使用选择排序按降序排序。我知道如何按升序进行,但我不知道如何按降序排列。
谢谢!
答案 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的工作原理,那么按降序排序应该是微不足道的。最好再次阅读你的笔记/书籍,并按照选择排序的实际工作方式进行操作。
要按升序排序,请在每个步骤中选择最小元素。要按降序排序,只需选择最大元素。因此,在第一步中,您选择最大的,在第二步中,您选择下一个最大的,依此类推,产生一个从最大到最小的列表。