算法系列-快速排序

定义 快速排序是用来排列一连串数字的算法 原理 从数列中挑出一个元素,称为基准 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以放在任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区操作 递归的把小于基准值元素的子数列和大于基准元素的子数列排序 PHP实现 PHP沙盒环境

Published
Categorized as 算法 Tagged

算法系列-归并排序

定义 归并排序是用来排列一连串数字的算法 原理 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直到某一指针达到序列尾 将另一序列剩下的所有元素直接复制到合并序列尾 PHP实现 PHP沙盒环境

Published
Categorized as 算法 Tagged

算法系列-堆排序

定义 堆排序指利用堆这种数据结构所设计的一种排序算法 大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列; 小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列; 原理 创建一个堆H[0,1,…,n-1,n] 把堆首(最大值)和堆尾互换 把堆的尺寸缩小1,并调用shif_down(0),目的时把新的数组顶端数据调整到相应位置 重复步骤2,直到堆的尺寸为1 PHP实现 PHP沙盒环境

Published
Categorized as 算法 Tagged

算法系列-插入排序

定义 插入排序是用来排列一连串数字的算法 原理 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。 PHP实现 PHP沙盒环境

Published
Categorized as 算法 Tagged

算法系列-选择排序

定义 选择排序是用来排列一连串数字的算法 原理 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置 再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾 重复第二步,直到全部待排序的数据元素的个数为零 PHP实现 PHP沙盒环境 拷贝代码到沙盒环境可以看到效果

Published
Categorized as 算法 Tagged

算法系列–冒泡排序

定义 冒泡排序是用来排列一连串数字的算法 原理 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 PHP实现 PHP沙盒环境 拷贝代码到沙盒环境可以看到效果

Published
Categorized as 算法 Tagged