算法
seven_0-0
这个作者很懒,什么都没留下…
展开
-
排序算法(二)选择排序解法及优化
选择排序的思想比较简单,它的工作原理是每次从待排序的序列中选择最大(或最小)的一个元素,放到序列的开头(或结尾),直到整个序列有序为止。 这种方法非常简单,代码如下:void SelectSort(int arr[], int len){ int i = 0; int j = 0; int min = 0; for (i = 0; i < len; i++)原创 2017-05-14 15:05:49 · 481 阅读 · 0 评论 -
排序算法(一)直接插入排序和希尔排序
我们知道如果数据按一定的排序标准进行排序,那么数据处理的效率也会随之提高。网上的排序算法不胜枚举,在这里我也整理了一些排序算法,和大家一起交流学习。原创 2016-11-30 00:04:49 · 1037 阅读 · 0 评论 -
排序算法(三)堆排序原理与实现(小顶堆)
堆排序实际上是利用堆的性质来进行排序的,要知道堆排序的原理我们首先一定要知道什么是堆。 堆的定义: 堆实际上是一棵完全二叉树。 堆满足两个性质: 1、堆的每一个父节点都大于(或小于)其子节点; 2、堆的每个左子树和右子树也是一个堆。 堆的分类: 堆分为两类: 1、最大堆(大顶堆):堆的每个父节点都大于其孩子节点; 2、最小堆(小顶堆):堆的每个父节点都小于其孩子节点; 堆的存原创 2017-05-19 00:17:09 · 46762 阅读 · 14 评论 -
排序算法(四)冒泡排序及其优化
基本思路: 冒泡排序的基本思路是通过元素的两两比较不断将较大值(升序)或则较小值(降序)移动序列的后面,类似于气泡向上冒的排序算法。 1、比较相邻两个元素大小,如若不符合要求则交换元素; 2、对整个序列做同样1的操作,最后的元素一定是当前比较的序列中最大(或最小)的元素; 3、重复以上操作除了上一次遍历的最后一个元素。 图解(升序): 我们可以根据冒泡排序原理写出代码:void原创 2017-06-06 15:54:03 · 539 阅读 · 0 评论 -
动态规划求解-将字符串A变换为字符串B 所用的最少字符操作次数
问题描述: 设A 和B 是2 个字符串。要用最少的字符操作将字符串A 转换为字符串B。 这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B 所用的最少字符操作次数也称为字符串A到B 的编辑距离,记为 d(A,B)。 试设计一个有效算法,对任给的2 个字符串A和B,计算出它们的编辑距离d(A,B)。 思路:原创 2017-06-03 23:33:10 · 24036 阅读 · 4 评论 -
AVL树详解&面试题-判断一棵树是否是平衡二叉树
上次写了关于二叉搜索树的分析,但是二叉搜索树有一个缺陷,就是当插入一个有序(或接近有序)的序列时,二叉搜索树就相当于一个链表了,搜索效率会特别低。那么,如何来改进呢?这就引入了AVL树(高度平衡二叉树),那么下面我们一起来了解一下AVL树吧! AVL树的特征: 1、左右子树的高度差都不超过1; 2、左右子树都是AVL树; 3、每个节点都有一个平衡因子bf(blance fator ),其值为原创 2017-06-24 22:57:26 · 6173 阅读 · 0 评论