数据结构(四.完)——O(nlogn)排序

来源:互联网 发布:c语言全排列函数 编辑:程序博客网 时间:2024/04/27 20:47

这种排序是改进后的排序,有希尔、堆、归并和快速排序,其中快速排序比较“好”:

sub swap  {  my ($d1, $d2, @a) = @_;  my $tmp = $a[$d1];  $a[$d1] = $a[$d2];  $a[$d2] = $tmp;  }  sub quickSort{my (@a, $low, $high) = @_;while($low < $high){my $pivot = pivotSelection(@a, 0, $length);qucikSort(@a, 0, $pivot - 1);$low = $pivot + 1;}}sub pivotSelection{my (@a, $low, $high) = @_;my $m = int($low + ($high - $low) / 2);swap(@a, $low, $high) if($a[$low] > $a[$high]);swap(@a, $high, $m) if($a[$m] > $a[$high]);swap(@a, $m, $low) if($a[$m] > $a[$low]);my $pivotkey = $a[$low];while($low < $high){if($low < $high and $a[$high] >= $pivotkey){$high --;}swap($low, $high, @a);if($low < $high and $a[$high] <= $pivotkey){$low ++;}swap($low, $high, @a);}return $low;}