百度了下插入式排序,百度百科中php版本的插入式排序如下:
1 function insert_sort($arr) { 2 // 将$arr升序排列 3 $count = count($arr); 4 for ($i=1; $i<$count; $i++) { 5 $tmp = $arr[$i]; 6 $j = $i - 1; 7 while ($j >=0 && $arr[$j] > $tmp) { 8 $arr[$j+1] = $arr[$j]; 9 $j--;10 }11 if (($j+1) != $i) {12 $arr[$j+1] = $tmp; 13 }14 }15 return $arr;16 }看着实在是别扭,然后就翻了下Robert Sedgewick写的《算法》,书中的代码都是用java实现的,在这里将插入式排序改用php重写一下:
1 function new_insert_sort($arr) { 2 // 将$arr升序排列 3 $count = count($arr); 4 for ($i=1; $i<$count; $i++) {// 索引,完成一次插入就需要将索引$i右移 5 // 将arr[i]插入到a[i-1]、a[i-2]、a[i-3]...之中,也就是如果符合条件就交换位置 6 for ($j=$i; $j>0 && $arr[$j] < $arr[$j-1]; $j--) { 7 $tmp = $arr[$j]; 8 $arr[$j] = $arr[$j-1]; 9 $arr[$j-1] = $tmp;10 }11 }12 return $arr;13 }我觉得第二种写法更容易让人理解,就像《算法》中写到:插入式排序就像爱玩扑克牌的人整理牌一样,将每一张牌插入到其他已经排好序的牌的适当位置。另外,百度时还发现了博客园的文章Frank Fan的文章插入式排序,也可以看看。
Magic CMS网站管理系统(政企版)采用PHP+Mysql架构,再原CMS系统的基础上精简出适合企业政府客户使用版本,继承了原系统的快捷,高效,灵活,实用的特点,保留了核心功能,系统支持自定义模版(极易整合dede模板)、支持扩展插件,自定义模型等功能,保留了文章模型,视频模型,图集模型,产品模型,能够胜任企业多种建站需求。BUG修复:1.修改了程序安装时部分数据无法正常导入的错误2.修改了程
2
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号