@array=sort{$a <=> $b} @input;
@input = qw \ 3 4 5 1 6 3 9 \;
所以这里perl如何在内部对值进行排序。
那么通过哪种方式在perl高级排序中对值进行排序,以及使用哪种排序方法对值进行排序以及如何排序?
答案 0 :(得分:3)
Perl 5.6及更早版本使用快速排序算法来实现排序。该算法不稳定,可能是二次的。 (稳定排序保留了比较相等的元素的输入顺序。虽然快速排序的运行时间是在所有长度为N的数组上平均的O(NlogN),但对于某些输入,时间可以是O(N ** 2),二次行为。)在5.7中,快速排序实现被替换为稳定的mergesort算法,其最坏情况行为是O(NlogN)。
答案 1 :(得分:2)
Sort函数根据Ascii table对值进行排序。
例如:
14,21,3,5
这将给出输出:
2
所以14和21就在那之前3,但是你首先期待3。所以在比较21和3时,它将它们作为字符串进行比较。意味着它正在比较两个字符串的第一个字符,即3
和<=>
,并且在Ascii表中的那个3之前,因此它在3之前放置了21。
默认情况下,Perl不理解您要将它们排序为数字。
因此,为了解决这个问题,我们使用比较运算符$a
,将这些数组元素作为数字进行比较。
要按升序和降序对它们进行排序,我们使用$b
和{$a <=> $b}
。当您编写代码块$a
时,它告诉Perl对于输入中的每对元素,将它们传递给$b
和-1
,并进行比较并返回:
$a
小于$b
,则1
如果$a
大于$b
0
如果$a
等于$b
<select id="selectbox" name="mfi_4_a_i">
<option value="1">Yes</option>
<option value="0">No</option>
</select>
<input type="text" id="sdd" disabled="true" />