数据结构和算法
Stoneshen1211
笨鸟后飞慢慢飞。。。
展开
-
求一个整数的二进制中1的个数(转)
转载自:http://blog.sina.com.cn/s/blog_63ce05ca0100u0ft.html求一个整数的二进制中1的个数 收藏 题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。 一个很基本的想法是,我们先判断整数的最右边一转载 2015-10-26 15:11:43 · 533 阅读 · 0 评论 -
斐波那契数列的递归解法
文章目录1 基本思想2 代码3 测试结果1 基本思想斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…从上面数列中可以看到,从第3项开始,每一项都等于前两项之和。因此,可以归结如下:2 代码#inc...原创 2019-06-09 17:45:06 · 15305 阅读 · 4 评论 -
排序之快速排序
文章目录1 基本思想2 图示3 代码4 测试结果5 复杂度及稳定性1 基本思想选取一个基准元素,将小于等于这个基准元素的元素放到此基准元素的左侧,将大于这个基准元素的元素放到此基准元素的右侧。此时整个无序序列被基准元素分割为左右两个子序列,左侧的子序列元素值都小于等于基准元素,右侧的元素值都大于基准元素。此时继续按照上述方法对左右两个子序列进行快速排序,最终得到有序序列。快速排序是一种基于冒...原创 2019-05-19 13:05:12 · 711 阅读 · 0 评论 -
排序之归并排序
1 基本思想归并排序是基于归并操作的一种排序方法,采用分治法。即将N个有序的子序列归并为一个新的有序序列,N为2时为2路归并,N为N时为N路归并。归并的前提是子序列已经有序,那么如何使子序列有序呐?上面提到提到采用分治法,“分”即将每个子序列分为更小的子序列,“治”即将“分”阶段得到的各个子序列进行排序,从而得到最终的排序结果。(下面图示会详细讲解)归并排序有两种实现方法,一种是递归,一种是...原创 2019-06-09 17:44:48 · 242 阅读 · 0 评论 -
排序之希尔排序
文章目录1 基本思想2 图示3 代码4 测试结果5 复杂度及稳定性1 基本思想根据gap值,将无序序列划分为若干个子序列,然后对每个子序列进行插入排序,使每个子序列有序,然后减小gap的值,如此反复,直到gap的值为1,此时所有元素都在同一个子序列中,排序完成。希尔排序也归属于插入排序。gap的值有不同的取法,这里采用n/3 +1, n为序列的长度。2 图示图示如下(来自狄泰软件学院)...原创 2019-05-19 13:04:54 · 159 阅读 · 0 评论 -
排序之冒泡排序
1 基本思想从后向前(或者从前向后),两两比较相邻元素的数值,如果逆序,则进行交换,直到没有逆序为止2 图示图示如下(来自狄泰软件学院)上图是从后向前冒泡排序,采用升序冒泡的方式。注意到上面有exchange这个参数,这个是一种改进的做法,如果再某次排序过程中,没有发生过一次交换排序,说明整个序列为有序序列,已经排序完成了,不再需要排序了3 代码#include <stdio...原创 2019-05-13 21:26:00 · 216 阅读 · 0 评论 -
排序之插入排序(二分法)
文章目录1 基本思想2 图示3 代码4 测试结果5 时间复杂度1 基本思想二分法插入排序和上一篇的插入排序本质上没有区别,都是从无序序列中取出数据和有序序列进行对比,放到合适的位置。区别在于:1.1上篇的插入排序是逐个和有序序列进行对比1.2因为有序序列是一个有序序列(废话),所以可以结合二分查找的方法,找到正确的位置,将元素插入。关于二分查找,这里就不再详细描述了。2 图示略3...原创 2019-05-13 21:25:39 · 2226 阅读 · 0 评论 -
排序之插入排序
文章目录1 基本思想2 图示3 代码4 测试结果5 时间复杂度及稳定性1 基本思想在无序序列中依次取出元素和有序序列进行对比,并将其放入到有序序列对应的位置,此时的有序序列依旧为有序序列,如此反复,直到无序序列为空。也可以这样理解,在一个数组中,当对第i个元素进行排序时候,此时i的前面的元素[i - 1] [i - 2] … [1] [0]已经排好序了,为有序序列,此时就需要将元素[i]和有...原创 2019-04-27 19:16:12 · 166 阅读 · 0 评论 -
排序之选择排序(Selection sort)
文章目录1 基本思想2 图示3 代码4 测试结果5时间复杂度及稳定性以前了解过的排序算法,发现长时间不用之后,有些遗忘,特此记录一下,待遗忘时候可以再查阅一下1 基本思想N个数据,每次(比如i次)从i ~ N中比较选出数值最小(或者最大)的元素,然后将此元素作为有序元素的第i个元素2 图示如下图(图片来自狄泰软件学院)根据上面图示可以看到,每次都会在未排序的数组中选出最小的数然后将...原创 2019-04-27 19:15:57 · 3610 阅读 · 0 评论 -
汉诺塔递归解法
文章目录1 基本思想2 代码3 测试结果1 基本思想关于汉诺塔的基本规则如下:有三根柱子,A柱从下往上按照大小顺序放着N个盘子,需要借助B将所有盘子移动到C上,并且最终C上的盘子从下往上也是大小顺序,每次只能移动一个盘子,并且任何时候小盘子都不能放到大盘子下面。初看此问题比较棘手,没有什么头绪,但是我们可以这样思考,我们最终的目的是将a上的柱子移动到c盘上面,因此我们首先需要将a柱子上最后...原创 2019-06-09 17:45:17 · 636 阅读 · 0 评论