数据结构
文章平均质量分 77
「已注销」
这个作者很懒,什么都没留下…
展开
-
交换排序之快速排序
上一篇文章讲述了交换排序的一种,冒泡排序http://blog.csdn.net/majianfei1023/article/details/7289177,现在讲一讲选择排序的另外一种算法,快速排序。1.基本思想假设要排序的数组是Array[0]……Array[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这原创 2012-02-24 02:03:11 · 840 阅读 · 1 评论 -
《算法导论》学习笔记--第十二章 二叉查找树
查找树以一种数据结构,它支持多种动态集合操作,包括search,minimum,maximum,predecessor,successor,insert以及delete,它既可以用作字典,也可以用作优先队列。二叉查找树的执行的基本操作的时间与树的高度成正比。对于一棵含有n个结点的完全二叉树,这些操作的最坏情况运行时间俄为O(lgn)。二叉查找树二叉查找树实现二叉原创 2012-03-10 01:45:07 · 1259 阅读 · 1 评论 -
对两个链表的排序和合并
首先,讲一下对于两个已排序链表的合并。源码如下:首先定义链表节点node,用于保存数据data和下一个节点next:struct node/*定义链表*/{int data;struct node *next;};然后对两个已排序链表进行合并,返回合并好的链表:node *unite_sort(node *head1, node *head2){原创 2012-02-24 19:44:59 · 3154 阅读 · 4 评论 -
《算法导论》学习笔记--第六章 堆排序
堆排序在运行时间上像合并排序,为(n*logn)。在空间上像插入排序,是一种原地排序算法,在任何时候,数组找那个只有常数个元素储存在输入数组以外。这样,堆排序就把以上两种算法的有点结合起来。那么在深入堆排序之前先来列举一下常见的排序方法,插入排序,最简单直观的排序方法,时间复杂度最坏O(n2),合并排序,基于分治的一种排序算法,时间复杂度O(nlgn),但不是原地排序的,明显合并的时候...原创 2012-02-20 12:55:31 · 3005 阅读 · 2 评论 -
插入排序 希尔排序
插入排序(insertion sort)的基本原理是,每次将一条待排序的记录按其键大小插入到前面已排序好的子序列中的适当位置,知道全部记录都插入完成为止。它的过程算法导论比喻得很好,就如同打牌一样,手中有一些已经排好序的牌,然后从牌堆中抓一张新牌,从右到左依次比较,直到找到合适的位置放下。每次迭代的过程中,数组左边已排序好的数据长度逐渐增大,直到整个数组都排序好。左边已排好序的部分可以看成原创 2012-02-23 23:14:19 · 1278 阅读 · 4 评论 -
Linux后台开发应该具备技能(二)
上一篇由于篇幅太大,编辑不方便。现补充一篇。后续会统一整理。上一篇地址:https://blog.csdn.net/majianfei1023/article/details/45337085一、Linux系统1、slab算法底层实现原理理解:Linux的伙伴算法把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,51...原创 2019-06-21 16:39:35 · 995 阅读 · 2 评论