希尔排序,也称递减增量排序算法,因DL.Shell于1959年提出而得名,是最早突破二次时间屏障的排序算法,是插入排序的一种高速而稳定的改进版本。
希尔排序的时间复杂度与增量选取有关,至今未能给出算法的时间复杂度的下界。
原理演示图:
PHP希尔排序算法实现源码:
- /**
- * ShellSort
- *
- * @param array $container
- * @return array
- */
- function ShellSort(array $container)
- {
- $count = count($container);
- for ($increment = intval($count / 2); $increment > 0; $increment = intval($increment / 2)) {
- for ($i = $increment; $i < $count; $i++) {
- $temp = $container[$i];
- for ($j = $i; $j >= $increment; $j -= $increment) {
- if ($temp < $container[$j - $increment]) {
- $container[$j] = $container[$j - $increment];
- } else {
- break;
- }
- }
- $container[$j] = $temp;
- }
- }
- return $container;
- }
以上就是希尔排序用PHP实现的源码,相关图片引用了博客https://blog.csdn.net/sgn132/article/details/47279511。
如果大家发现在上述算法中有需要优化的地方,欢迎评论区留言。