随笔分类 -  面试机试题

面试机试题总结
堆排序总结
摘要:堆排序 概念: 第一个非叶子节点: 小于size/2的部分; 非叶子节点的区间: [0, size/2); (注意是左闭右开) 最大堆:满足父节点head, arr[head]<=arr[2*head+1] && arr[head]<=arr[2*head+2] 非叶子节点的子树才需要调整(没有子节 阅读全文

posted @ 2016-04-24 12:30 skipping 阅读(1222) 评论(0) 推荐(0)

快速排序
摘要:思想 快速排序采用的思想是分治思想。 基准(pivot):快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot), 然后对数组进行分区操作, 使基准左边元素的值都不大于基准值, 基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。 递归快速排序,将其他n-1个元 阅读全文

posted @ 2016-04-19 19:06 skipping 阅读(168) 评论(0) 推荐(0)

归并排序
摘要:归并排序主要分为三步: 划分问题: 把序列分为元素个数尽量相等的两半; 递归求解: 把两半元素分别进行排序 合并问题: 把两个有序表合并成一个; 其中前两部分比较容易,关键是第三部分合并数组; 归并函数 1 void mergerSort(int arr[], int start, int end, 阅读全文

posted @ 2016-04-19 15:55 skipping 阅读(241) 评论(0) 推荐(0)

插入排序
摘要:经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。 图1演示了对4个元素进行直接插入排序的过 阅读全文

posted @ 2016-04-17 23:33 skipping 阅读(383) 评论(0) 推荐(0)

排序算法
摘要:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较 阅读全文

posted @ 2016-04-17 20:59 skipping 阅读(726) 评论(0) 推荐(0)

数据结构复习目录
摘要:基本数据结构: 栈:栈的原理,应用(括号匹配) 队列: 优先队列队列(霍夫曼编码); Map: Set: 链表: 单线链表(增、删、查、改、反转、快慢指针、第k个值、是否有环、),双向链表; 阅读全文

posted @ 2016-04-17 20:53 skipping 阅读(176) 评论(0) 推荐(0)

删除链表中指定值的节点
摘要:面试题经常遇到的基础题:删除链表中指定值的节点。 解题思路: (1) 新建单向链表; (2) 删除链表中的指定值: void deleteNum(Node* head, int data); 解题思路: 步骤一: 排除特殊情况:头结点值等于需要删除值data,则先直接删除头部的节点; 步骤二: 使用 阅读全文

posted @ 2016-04-06 16:59 skipping 阅读(3150) 评论(0) 推荐(1)

导航