数据结构算法
Difcipo
这个作者很懒,什么都没留下…
展开
-
数据结构与算法理论篇--堆排序
这里只谈理论不谈具体代码实现堆排序是一种选择排序,关键是筛选。进行堆排序要先了解怎么建立堆在连接堆调整。堆又分为大根堆和小根堆,这里以小根堆为例。小根堆的每一个节点都要小于它的两个左右子树的根节点。建立堆:先按照所给序列(从上到下从左到右)进行初始化成一个完全二叉树,然后从最后一个非叶子结点开始调整调整从第n/2个元素开始,将以该元素为根的二叉树调整为堆将以序号为n/2-1的节点为根的二...原创 2020-04-13 23:26:33 · 176 阅读 · 0 评论 -
数据结构与算法理论篇--希尔排序
这里只讲理论不谈具体的代码实现希尔排序也是一种插入排序算法。先取一个小于n的整数d1作为第一个增量,把表的全部元素分成d1个组,将所有距离为d1的倍数的元素放在同一个组中,在各个组内进行直接插入排序,依次重复。举个栗子:{9,8,7,6,5,4,3,2,1,0}。例子中有10个数,d=5时,就把这一序列分为5组每组2个元素,可以找第一个元素然后往后面数第五个元素就是与它一组以此类推。(9,4)...原创 2020-04-13 21:47:34 · 347 阅读 · 0 评论 -
数据结构域算法--快速排序
这里只谈理论不谈具体代码实现快速排序是有冒泡排序改进的都是交换排序的一部分,基本思想是在待排序的n个元素中任取一个元素作为基准,把该元素放到适当的位置把次序列分成两部分,也就是所有关键字比该元素关键字小的放在前一部分,比他大的放在后一部分并把该元素放到两部分中间。举个栗子:{6,8,7,9,0,1,3,2,4,5,}。每次开始划分时都找一个数作为基准。这里作为基准的数都用圆圈圈起来了。左右分区...原创 2020-04-13 21:16:28 · 217 阅读 · 0 评论 -
数据结构与算法理论篇--归并排序
这里只谈理论不谈具体的代码实现归并排序是将两个或两个以上的表合并成一张新有序表。说明:归并排序每趟产生的有序区是局部有序,也就是说在最后一趟排序结束前所有元素并不一定归位。归并排序需要额外的辅助空间所以空间开销大。二路归并排序就是将n个元素看成n个长度为1的有序序列,然后两两归并举个栗子:{6,8,7,9,0,1,3,2,4,5}这样一步一步就排好了顺序!二路归并需要log(2)n趟,每趟...原创 2020-04-13 20:43:21 · 289 阅读 · 0 评论 -
数据结构与算法理论篇--基数排序
这里只讲理论不谈具体的代码实现。基数排序有两种:最低优先和最高优先。基数排序的过程可分为分配和收集。说明:基数排序每趟并不产生有序区,也就是说在最后一趟排序结束前所有元素前并不一定归为。基数只能在0-9中选择。举个栗子最低优先:{321,156,57,46,28,7,331,33,34,63}。第一步先分配假如有10个桶分别从0编号到9。每次分配都按照相应位的数放入到相应编号的桶中这样依次类...原创 2020-04-13 20:24:33 · 243 阅读 · 0 评论