当前位置:Gxlcms > PHP教程 > php之插入排序

php之插入排序

时间:2021-07-01 10:21:17 帮助过:3人阅读

php之插入排序

1.直接插入排序代码实现:

header("content-type:text/html;charset=utf-8");

//直接插入排序实现从小到大排序//思路:每一趟排序将待排序的记录(元素)插入到前面的有序数列中,从左到右不断增大有序数列//关键:找到前面的有序数列中正确插入位置。$arr  =array(6,18,2,4,16,8);

echo"
排序前:
"
; print_r($arr); insertSort($arr); echo"
排序后:
"
; print_r($arr); functioninsertSort(&$arr) {$len = count($arr); //从第二个记录起,跟前面的有序数列比较寻找插入位置for($i = 1;$i < $len; $i++) { $insertData = $arr[$i];//要插入的记录$pos = $i;//插入位置for($j = $i - 1;$j >= 0;$j--) { if($arr[$j] > $insertData)//如果前面的记录大于要插入的记录 { $arr[$j+1] = $arr[$j];//前面的记录往后移一个下标$pos--; } else { break; } } $arr[$pos] = $insertData;//插入到正确位置echo"
第{$i}趟排序结果:"
; print_r($arr); } }

2.二分查找插入排序代码实现

header("content-type:text/html;charset=utf-8");

//二分查找插入排序:跟直接插入排序思路差不多,不同在通过二分查找来确定插入位置$arr  =array(6,18,2,4,16,8);

echo"
排序前:
"
; print_r($arr); bsInsertSort($arr); echo"
排序后:
"
; print_r($arr); functionbsInsertSort(&$arr) {$len = count($arr); for($i = 1;$i < $len; $i++) { $left = 0; $right = $i -1; $mid = 0; $insertData = $arr[$i];//要插入的记录while($left<=$right) { $mid = ($left + $right)/2; if($insertData > $arr[$mid]) { $left = $mid + 1; }else { $right = $mid -1; } } //$left是要插入的位置for($j=$i-1;$j>=$left;$j--) { $arr[$j+1] = $arr[$j];//后移比插入记录大的数 } $arr[$left] = $insertData; } }

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了php之插入排序,包括了插入排序,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 人气教程排行