算法
文章平均质量分 57
木樨天堂
天空中没有翅膀的痕迹、但我已飞过
展开
-
内部排序(1)——插入类排序
插入类排序一、直接插入排序算法分析: 从空间角度来看,只需要一个辅助空间r[0]。 从时间角度来看,主要时间耗费在关键字比较和移动元素上。 直接插入排序的时间复杂度为O(n^2),空间复杂度为O(1)。 直接插入排序是稳定的。 **直接插入排序在基本有序时效率较高,并且在序列规模不是很大时效率也很高。** void InsertSo原创 2017-07-28 11:20:34 · 290 阅读 · 0 评论 -
内部排序(2)——交换类排序
交换类排序一、冒泡排序void BubbleSort(int a[], int len)//冒泡排序 { int i = 0, j = 0; bool flag = 0; for(i = 1; i<= len; i++) //趟数秩序冒泡len-1趟就可全部排完 { for(j = 0; j<= len-i; j++) //每排一趟就有一个数原创 2017-07-30 15:18:26 · 256 阅读 · 0 评论 -
内部排序(3)——选择类排序
选择类排序一、简单选择排序简单选择排序的思路很简单:进行len-1趟选择,剩下一个元素就不用选择了,每一趟将选取的最小的元素放至该趟的起始位置i,那么从i开始到len为止的元素向后移动一位。然后再将这个最小值放在该处。代码如下:void SelectSort(int a[], int len) //简单选择排序 { int i = 0,j = 0,pos = 0; for(i原创 2017-07-31 18:52:28 · 234 阅读 · 0 评论 -
递归、迭代、到动态规划
递归 VS迭代首先,一起来看下这几道经典面试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。先看第1题: 先走f(n-1),剩一级台阶我们一步跨上去。 先走f(n-2),剩两级台阶我们一次跨两部上去。(一次跨一步的话就属于上面第一种类型了原创 2017-07-31 17:50:07 · 469 阅读 · 0 评论 -
求第K个丑数
首先,我们来看下这道面试题的描述:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。法一:遍历法要求第K个丑数,那么根据它的性质(只含有2,3,5的因子),我们可以想到一种很直观的方法: 从1开始每次加一往后找,知道找到K个丑数,每一次判断该数是否为丑数的方法是——看该数原创 2017-08-24 12:51:16 · 435 阅读 · 0 评论