
算法
hufangzhou_hfz
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PHP 排序算法(五) 希尔排序
希尔排序希尔排序又称缩小增量排序,是指将无序序列,按照增量的不同大小,分成若干个序列,然后对子序列进行插入排序,本质上就是插入排序。思路:我们先确定增量,一般初始增量我们都设置为数组长度的一半(向下取整); 我们根据增量,将数组分成了若干个子序列: 分别对这四个子序列进行插入排序: 然后再一次遍历,增量设置为原先的一半,也就是继续除以2(向下取整),得出的序列: 分别对这两个序列进行插入排序,结果为: 再将增量除以2得到新增量为1,便...原创 2020-07-05 16:17:27 · 390 阅读 · 2 评论 -
PHP 排序算法(四) 快速排序
快速排序思路:我们首先要找到一个基准,数组的前半部分是比基准小的元素,数组后半部分是比基准大的元素,这里我就拿数组第一个元素作为基准; 设置队首和队尾两个指针; 队尾指针先进行活动,一直向队首移动,直到找到比基准值小的元素,然后将这个值赋给队首指针处; 下面队首指针开始活动,一直向队尾移动,直到找到比基准值大的元素,然后将这值赋给队尾指针处; 等到队首指针和队尾指针指向同一处时,将基准值赋给当前指针指向的同一位置,此时,基准元素前面的都是比它要小的元素,后面都是比它大的元素; 接...原创 2020-07-04 11:37:31 · 574 阅读 · 0 评论 -
PHP 排序算法(三) 插入排序
插入排序(以升序为例)核心思想:将数组看成两个数组,左边的是有序数组,右边的是无序数组。将右边的元素,一个个插入到有序数组数组中。首先要找一个基准,所以就拿第一个元素 $arr[0]来作为有序数组的第一个元素function insertSort($arr) { //获取数组单元个数 $count = count($arr); //外层循环用于从未排序区域中取出待排序元素 for ($i=1; $i < $count; $i++) { //原创 2020-07-03 12:12:30 · 192 阅读 · 0 评论 -
PHP 排序算法(二) 选择排序
详细的实现和原理放在了代码中,欢迎大家评论区指正!/* * 选择排序 * 1. 选择,可以说是筛选,也就是每一次遍历都要找到最小的一个数 * 2. 首先,选择排序算法的思想是将这个数组看成两个数组,一个是有序的,另一个是无序的 * 举例说明:有一个数组$arr = array(4,1,3,2); * 起始,我们可以看成{null}{4,1,3,2} 这样两个数组,前一个是有序的,后一个是无序的 * 进入第一次循环,我们筛选出了最小数1,所以我们将1放到有序数组中,结果.原创 2020-07-02 18:07:35 · 200 阅读 · 0 评论 -
PHP 排序算法(一) 冒泡排序
详细实现和原理已经放在了代码里了,欢迎大家在评论区指正!/* * 冒泡排序(以升序为例) * 1. 将数组中左右相邻的两个数进行比较,数值大的放在右边 * 2. 这样一趟下来,整个数组中最大的就排在了最右边,所以下一遍比较的时候就不用比较最后一个元素,简言之可以少比较一次 * 3. 那么由此可推出,整体需要遍历数组长度length-1次,每一行比较length-i-1次 * 4. 可以得出冒泡排序的时间复杂度为O(n^2) * **/function BubbleSort($arr).原创 2020-07-01 16:56:03 · 153 阅读 · 0 评论