![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
NanciZhao
这个作者很懒,什么都没留下…
展开
-
python冒泡排序算法原理与实现
一、冒泡排序算法原理这个算法的名字由来是因为越小的元素会经过交换慢慢“浮”到数列的顶端。核心思想是:通过双层循环遍历,每次比较两个数,如果他们顺序错误(大于或者小于),那么就把他们位置交换。二、代码实现def bubble_sort(b): if(len(b)<2): return b for i in range(0, len(b)): ...原创 2020-01-05 13:16:19 · 245 阅读 · 0 评论 -
python快排算法原理与实践
一、快排算法原理快排算法采用了分而治之的策略。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分所有数据都要小,然后再按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤:1)在数列之中,选择一个元素作为“基准”(pivot),或者叫比较值;2)数列中所有元素都和这个基准值进行比较,如果...原创 2020-01-05 11:07:49 · 144 阅读 · 0 评论 -
各大排序算法复杂度
原创 2019-08-28 09:43:17 · 79 阅读 · 0 评论 -
查找算法之B-tree算法
个人纪录:动态查找算法:只是在查找过程中,如果查找失败,就把待查询的记录插入到数据集中。显然动态查找的数据集市通过查找过程而动态生成的。动态查找法主要通过树结构来实现。在大规模数据查找中,大量数据信息存储在外存磁盘。在查找时需要从磁盘中读取数据。数据I/O操作的基本单位是块(block)。位于同一盘块的所有数据都能被一次性全部读取出来。磁盘数据用一个三维地址唯一标识:柱面号,盘面号,块号(磁道上的...原创 2018-03-04 10:56:02 · 665 阅读 · 0 评论 -
数据结构之冒泡及PHP实现
原理:冒泡排序通过不断比较相邻元素的大小,然后决定是否对这两个元素进行交换操作,达到排序的目的。通过相邻元素的比较,第一次排序,将最大的元素排至最上(最右侧);再循环对剩下的元素进行比较,找出第二大元素。………………PHP代码实现:class BubbleSort { public static function Sort(&$arr) { if(count($arr)<=1) {...原创 2018-02-08 16:28:20 · 111 阅读 · 0 评论 -
简单选择排序及PHP实现
简单排序:对于长度为n的数组data,从第一个元素开始,利用线性查找的方法比对并找出最小的元素排在第一位;再从后面依次找出第i个最小元素,排在第i位;PHP实现代码:function simpleSelectSort(&$arr) {for($i=0;$isimpleSelect($arr,$i);}}function simpleSelect(&$arr,$i)原创 2018-02-07 11:34:45 · 249 阅读 · 0 评论 -
直接插入排序及PHP实现
假设数组data,一共n个值,data[0],data[1],....data[p],data[p+1],.....data[n-1].排序的思想:如果data[0,p]已经有序,那么设法将data[p+1]插入到有序的组数中,将data[p+1]与data[0,p]进行比对并交换,实现插入。数组从i=1,n-1开始重复以上步骤,即可实现插入排序。直接插入排序算法的时间复杂度是O(n^原创 2018-02-07 10:15:09 · 368 阅读 · 0 评论 -
数据结构之折半查找法
折半查找法的原理:对于有序表,用给定值k先于中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,知道查找或查找结束发现表中没有这样的结点。说明:元素必须是有序的,如果是无序的则要先进行排序操作。注:折半查找的前提条件是需要有序表顺序存储,对于静态找表,一次排序后不再变化,折半查找能得到不错的效率。...原创 2018-02-27 10:22:03 · 1267 阅读 · 0 评论 -
顺序查找及PHP实现
顺序查找的过程为:从表中第一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功;否则,若至最后一个记录的关键字与给定值都不等,表明表中没有所记录,查找不成功。表中数据元素之间不必拥有逻辑关系,即他们在表中可以任意排序。PHP实现:function SequelSearch($arr,$key) { for($i=0;$i<count($arr);$...原创 2018-02-27 08:57:41 · 518 阅读 · 0 评论 -
什么是堆Heap,最大堆,最小堆
堆:完全二叉树最大堆(大顶堆):当前节点value>=子节点;最小堆(小顶堆):当前节点value最大堆的实现:怎么将堆调整为最大堆,function swap(&$arr, $a, $b) { $temp = $arr[$a]; $arr[$a] = $arr[$b]; $arr[$b] = $temp;}function adjustN原创 2018-02-02 21:18:03 · 801 阅读 · 0 评论 -
PHP归并排序算法
$arrStoreList = array(3,2,24,1,5);$sort = new Merge_sort();$sort->mergeSort($arrStoreList, function($a,$b) {return $a});var_dump($arrStoreList);class Merge_sort{public function merg转载 2018-02-05 15:47:28 · 135 阅读 · 0 评论 -
折半插入排序及PHP实现
直接插入排序算法是利用有序表的插入操作来实现对数据集合的排序。在进行第p+1趟的插入排序时,需要在前面的有序序列data[0],data[1],...,data[p]中找到data[p+1]的对应的位置i,同时将data[i],data[i+1],....,data[p]都向后移动一个位置。由于有序序列式排好序的,故可以用折半查找(二分法)操作来确定data[p+1]对应的位置i,这就是折半插入算...原创 2018-02-09 13:18:45 · 269 阅读 · 0 评论 -
快速排序原理及Python实现
快速排序的基本思想是:1、先从数列中取出一个数作为基准数2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边3、再对左右区间重复第二步,直到各区间只有一个数python实现:class Solution: def sortArray(self, nums: List[int]) -> List[int]: if len(nu...原创 2018-02-09 08:14:14 · 367 阅读 · 0 评论