PHP实现希尔排序
来源:互联网 发布:计算机软件编程入门 编辑:程序博客网 时间:2024/06/04 00:46
希尔排序通过将数据分成不同的组,先对每一组进行排序,然后再对所有的元素进行一次插入排序,实际上是将相隔某个“增量”的记录组成一个子序列,实现跳跃式的移动,使得排序的效率提高,以减少数据交换和移动的次数。平均效率是O(nlogn),空间复杂度O(1)。其中分组的合理性会对算法产生重要的影响。现在多用D.E.Knuth的分组方法。
希尔排序比冒泡排序快5倍,比插入排序大致快2倍。希尔排序比起QuickSort,MergeSort,HeapSort慢很多。但是它相对比较简单,它适合于数据量在5000以下并且速度并不是特别重要的场合。它对于数据量较小的数列重复排序是非常好的。最坏的情况下时间复杂度是 O(n^2)。
function swap(array &$arr, $a, $b){ $temp = $arr[$a]; $arr[$a] = $arr[$b]; $arr[$b] = $temp;}//希尔排序function shell_sort(array &$arr){ // 将$arr按升序排列 $len = count($arr); $f = 3; // 定义因子 $inc = 1; // 最小增量为1 while ($inc < $len/$f){ $inc = $inc * $f + 1; // 1, 4, 13, 40, 121, ... } while ($inc >= 1){ for ($i = $inc; $i < $len; $i++){ // 将a[i]插入到a[i-h], a[i-2*h], a[i-3*h]... 之中 for ($j = $i; $j >= $inc; $j -= $inc){ if ($arr[$j] < $arr[$j-$inc]){ swap($arr, $j, $j-$inc); } } } $inc = intval($inc/$f); } }$arr = array(49,8,65,6,76,13,27,15,-5,3);shell_sort($arr);print_r($arr);
阅读全文
0 0
- php实现希尔排序
- PHP实现希尔排序
- 希尔排序(PHP实现)
- PHP实现排序算法----希尔排序(Shell Sort)
- 希尔排序 实现
- 希尔排序[Java实现]
- 希尔排序的实现
- 希尔排序--Python实现
- 希尔排序C++实现
- 希尔排序的实现
- Java实现希尔排序
- 希尔排序实现
- 希尔排序的实现
- 希尔排序实现c++
- 希尔排序----java实现
- 希尔排序的实现
- 希尔排序的实现
- 希尔排序的实现
- cs231n assignment(1.4):two_layer_net
- hadoop-2.7.3 + hive-2.3.0 + zookeeper-3.4.8 + hbase-1.3.1 完全分布式安装配置
- MVC配置拦截器
- 非结构化数据查询方法分类;顺序扫描法;全文检索法
- HDU 1560 DNA sequence(IDA*~)
- PHP实现希尔排序
- Eclipse远程调试
- JSTL 自定义标签
- JDK安装配置(菜鸟笔记,多多指教)
- 【JavaScript】箭头函数
- lucene 第一步 创建文档对象
- Linux命令(16)——chattr与lsattr命令
- 历年北京理工大学复试上机题
- 电脑开机出现GNU GRUB Minimal BASH-like line editing is supported