【发布时间】:2017-12-26 06:28:06
【问题描述】:
在我的代码中,我计算了插入排序和选择排序比较和交换时间。但我看到它们在比较和交换方面是平等的。 但我使用 while 循环进行插入。我可以使用 for 循环进行选择。 看代码。
<?php
$a = array(4,1,7,9,3,2,6,8,10,20,14,29,54,27,563,4,563,334,2,7,5,42,24);
$num = sizeof($a);
for ($i=0; $i < $num; $i++) {
echo "$a[$i] | ";
}
echo "<br>";
echo "<br>Selection<br>";
//selection sort
$swap = 0;
$com = 0;
for ($inner=0; $inner < $num-1; $inner++) {
$min = $inner;
for ($i=$inner+1; $i < $num; $i++) {
if ($a[$i] < $a[$min]) {
$min = $i;
}
$com++;
}
$swap++;
$past = $a[$inner];
$a[$inner] = $a[$min];
$a[$min] = $past;
}
for ($k=0; $k < $num; $k++) {
echo "$a[$k] | ";
}
echo "Com : <span style='color:red;'>$com</span> ";
echo "Swap :<span style='color:red;'> $swap</span> ";
echo "<br>Insertion<br>";
$swap = 0;
$com = 0;
for ($out=1; $out < $num ; $out++) {
$temp = $a[$out];
for ($i=$out; $i > 0; $i--) {
if ($a[$i-1] >= $temp) {
$a[$i] = $a[$i-1];
}
$com++;
}
$a[$i] = $temp;
$swap++;
}
for ($k=0; $k < $num; $k++) {
echo "$a[$k] | ";
}
echo "Com : <span style='color:red;'>$com</span> ";
echo "Swap :<span style='color:red;'> $swap</span> ";
?>
现在。你怎么能告诉我插入排序在任何情况下都比选择排序快?因为它们在我的代码中总是一样的!谢谢
【问题讨论】:
-
我的回答解决了你的疑惑吗?