希尔算法
来源:互联网 发布:js获取当前系统时间 编辑:程序博客网 时间:2024/06/15 07:53
/**
* 希尔排序
*/
function shell_sort($arr){// 将$arr按升序排列
$len = count($arr);//算数组的总长度
$f = 3;// 定义因子//拿这个数和哪个数比
$h = 1;// 最小为1//最小隔几个对比,设为1就是隔一个对比
if($h < $len/$f){//定义和第几个比
$h = $f*$h + 1; // 1, 4, 13, 40, 121, 364, 1093, ...不能从下标0开始
}
while ($h >= 1){ // 将数组变为h有序 while循环条件为TURE时执行;
for ($i = $h; $i < $len; $i++){ // 将a[i]插入到a[i-h], a[i-2*h], a[i-3*h]... 之中 (算法的关键,循环判断
// echo $i."<br>";
for ($j = $i; $j >= $h; $j -= $h){//判断条件是否成立
if ($arr[$j] < $arr[$j-$h]){//拿第一个数和第(4)个数相比,如果第一个数大于第四个数就调换位置,从而做到排序
$temp = $arr[$j];
$arr[$j] = $arr[$j-$h];
$arr[$j-$h] = $temp;
}
// echo $j-$h."--".$j;
// print_r($arr);echo '<br/>'; // 打开这行注释,可以看到每一步被替换的情形
}
}
$h = intval($h/$f);//条件
}
return $arr;
}
$arr = array(14, 9, 1, 4, 6, 15, 3);
print_r(shell_sort($arr));die;
以上归结于网上总结,方便日后查看,大神勿喷。
阅读全文
0 0
- 希尔算法
- 希尔算法
- 排序算法--希尔算法
- C#算法 希尔排序
- 排序算法--希尔排序
- 希尔排序算法
- 希尔算法(记录)
- C#算法 希尔排序
- 算法-希尔排序
- 希尔排序算法
- 希尔排序算法 shellsort
- 希尔排序算法范例
- 希尔排序算法
- 希尔排序算法分析
- 希尔排序算法
- java希尔排序算法
- C#希尔排序算法
- 算法之希尔排序
- Python 中的类(上)
- CodeVS1025 选菜 解题报告【背包型DP】
- 代理及动态代理
- HDU-4899 Hero meet devil(DP套DP)
- mysql基本命令
- 希尔算法
- 记录一些开源软件
- Flume--failover sink processor
- Ambari集成接入Elasticsearch服务(无网接入)
- 用我们训练的MTCNN中o-net测试训练图片的landmark的mean error
- Python 中的类(中)
- P1125 笨小猴
- 分布式文件系统
- Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接