算法
大燕codeblog
脚踏实地
展开
-
数据结构常见面试(1)
1.算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。 2.算法的基本要素:算法中对数据的运算和操作、算法的控制结构。 3.算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 4.算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求。 二.算法的复杂度 1.算法的时间复杂度:指执行算法所需要的计算工作量 2.算法的空间复杂度:执行这个算法所需要的内存空间三原创 2016-03-03 15:42:36 · 445 阅读 · 0 评论 -
常用数据结构汇总
删除的方法⑴ 按序号删除 删除单链表中的第i个结点。 为了删除第i个结点ai,必须找到结点的存储地址。该存储地址是在其直接前趋结点ai-1的next域中,因此,必须首先找到ai-1的存储位置p,然后令p–>next指向ai的直接后继结点,即把ai从链上摘下。最后释放结点ai的空间,将其归还给“存储池”。 设单链表长度为n,则删去第i个结点仅当1≦i≦n时是合法的。则当i=原创 2016-05-22 15:22:46 · 847 阅读 · 0 评论 -
字符串反转
已处理最后字串的完整代码#include <stdio.h>void main() { char str[]="you are a student"; printf(str); printf("\n"); char *p,*q; char temp; p=q=str; while(*q!='\0') { q++;转载 2016-07-11 14:29:15 · 470 阅读 · 0 评论 -
排序之冒泡排序
冒泡排序的定义是什么? 越大的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序的原理是什么? 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 实现代码如下void bubble_原创 2016-04-14 11:02:21 · 388 阅读 · 0 评论 -
归并排序
1.归并排序的概念 将待排序元素分成两个区间,用递归思想将两个区间进行排序。 将 两个排好的有序区间的元素进行归并。 2.归并排序的思想 分治思想 递归思想(区间的不断缩小) 3.归并排序的的实现3.1先从简单的合并开始//将有序数组a[]和b[]合并到c[]中 void MemeryArray(int a[], int n, int b[], int m, int c[]) {原创 2016-06-01 16:58:51 · 228 阅读 · 0 评论 -
桶排序
定义 将数组元素的范围划分为几个子范围(桶子),再对每个桶子里所有元素进行排序,最后合并桶子。 算法模型 根据数组中元素的范围,来合理划分筒子个数 将各个数组元素放入桶子里 对每个桶子里元素进行排序 合并桶子里的数据 伪代码Bucket-Sort(A) let B[0..n-1] be a new array n = A.lenghtS for i = 0 to n - 1原创 2016-05-05 20:01:04 · 346 阅读 · 0 评论 -
各种常用链表总结
单链表逆序 思想(方法一) 头插法 迭代 ListNode* reverseList(ListNode* head) { ListNode *prev = NULL, *cur=head, *tmp; while(cur){ tmp = cur->next; cur->next = prev;//插入头部原创 2016-04-17 14:13:58 · 1557 阅读 · 0 评论 -
常用算法之(插入排序)
什么叫插入排序? 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。 实现插入的基本思想是什么? 每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 实现步骤 找到插入位置 将插入位置上的元素向后移。 将元素放入插入位置。 代码实现 void Insertsort (int a[], int n) /原创 2016-04-14 10:26:40 · 364 阅读 · 0 评论 -
oc之递归遍历文件的行数
1.参数是文件(夹)路径:path 2.跟路径有关的类是NSfileManager,这个类的对象是单例对象, 3.首先要创建这个对象 。(NSfileManager *mgr =[ NSfileManager defaultManager]) 然后运用对象的方法对路径进行判断。 4。运用到递归的算法。 int codeLineConut(NSString *path){ NSFileMan原创 2016-03-25 19:01:01 · 861 阅读 · 0 评论 -
快速排序
思想 快速排序采用的思想是分治思想。(Divide-And-Conquer) 基本分析—首先,假设所要排序的数字存储在数组S中,则该算法的操作可以拆分为两部分首先将找出一个元素(理论上可以随便找一个)作为基准(pivot)。然后对数组进行分区移位操作。即基准左边区域的都是小于基准的,右边区域的都是大于基准的,然后将基准放在两区域分离的边界中心。 举个例子:原创 2016-03-05 20:00:43 · 525 阅读 · 0 评论