导航

随笔分类 -  数据结构&算法

摘要:1.冒泡法 冒泡法的思想:从头开始,一次比较两个相邻的元素,如果前面的大于后面的就交换,因此一轮结束后,最大的元素会放到最后。之后重复从头开始比较,进行剩下元素(此时最后一个元素已排序好)的排序。 2.选择法 选择排序法思想:每一趟从待排序的数据元素中选出最小的一个元素,顺序放在已排好序的数列的最后 阅读全文

posted @ 2018-08-24 10:04 困或 阅读(184) 评论(0) 推荐(0)

摘要:1.快速排序的思想 给第一个元素找到在数组中的位置,这个位置就是这个元素最终在数组中的位置,然后给这个元素左右两侧进行递归排序。 2.代码 代码说明: [1]把第一个值作为key,并保存下来,此时数组第一个位置就空出来了。 [2]之后进入循环,每个循环:首先从后往前找,找到小于key的,放到空出的位 阅读全文

posted @ 2018-08-23 15:59 困或 阅读(177) 评论(0) 推荐(0)

摘要:1.算法说明 [1]归并算法,指的是将两个已经排序的序列合并成一个序列的操作。 [2]该算法采用的是分治法思想。 2.算法代码 [1]上面代码输出结果: [2]中间的7行是每次调用merge()函数之后的结果,dir表示排序的方向,-1表示排序左侧,0表示排序整个数组,1表示排序右侧。 [3]代码流 阅读全文

posted @ 2018-08-22 11:03 困或 阅读(186) 评论(0) 推荐(0)

摘要:1.堆定义 堆的性质: [1]堆中某个节点的值总是不大于或不小于其父节点的值; [2]堆总是一棵完全二叉树。 [3]将根节点最大的堆叫做大根堆,根节点最小的堆叫做小根堆。 堆还是很简单的,父节点的值总是大于(或者总是小于)子节点的值,但是左右子节点没有大小顺序。由于是完全二叉树,所以可以用数组表示堆 阅读全文

posted @ 2018-08-21 16:08 困或 阅读(237) 评论(0) 推荐(0)

摘要:1.算法说明 [1]深度优先搜索主要基于栈来操作,即把初始节点沿着一条路径直到终点入栈,然后再返回访问分叉,沿着分叉直到终点入栈,以此反复,所以使用递归比较方便。 2.例子 代码: 代码: 阅读全文

posted @ 2018-08-17 16:26 困或 阅读(203) 评论(0) 推荐(0)

摘要:1.算法说明 [1]广度优先搜索算法(BFS)主要用于计算源点到目标点的最短路径。 [2]BFS的基本实现是使用队列,从源点开始入队列,访问后把临近节点入队列,之后出队列,再访问刚加进的临近节点,以此反复访问,知道达到目标点。 2.算法步骤 1. 首先将根节点放入队列中。 2. 从队列中取出第一个节 阅读全文

posted @ 2018-08-17 14:29 困或 阅读(339) 评论(0) 推荐(0)

摘要:1.红黑树的意义 [1]二叉查找树在极端的插入情况下,操作时间复杂度会变为O(n),但是平衡二叉树可以一直维持在O(lg(n))。因此平衡二叉查找树的效率很高,红黑树是一种自平衡二叉查找树的实现方式,这便是红黑树的意义。 2.红黑树性质 [1]节点是红色或黑色。 [2]根节点是黑色。 [3]每个叶节 阅读全文

posted @ 2018-08-15 11:26 困或 阅读(300) 评论(0) 推荐(0)

摘要:1.定义 二叉查找树或者是一棵空树,或者是具有下列性质的二叉树: 1)若左子树不空,则左子树上所有结点的值均小于或等于它的根节点的值; 2)若右子树不空,则右子树上所有结点的值均大于或等于它的根节点的值; 3)左、右子树也分别为二叉排序树; 2.操作 [1]查找,从根开始查找,小于根的查左子树,否则 阅读全文

posted @ 2018-08-14 10:15 困或 阅读(216) 评论(0) 推荐(0)