自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 归并排序及排序算法的总结

一:归并排序的思想是 采用分治法,先将一组序列换分成小区间,使分隔区间有序,然后将这些小区间两两归并,最后成为一个有序的序列 思路: 设两个有序的子序列放到同一个序列中的相临的位置,如arr[left..key],arr[key+1…right],先将他们合并到一个临时序列tmp中,最后合并完成后tmp拷贝会原数组arr[left,right]中,这样最后得到的序列就是有序序列. 如: 待

2017-05-27 16:53:17 1456 1

原创 面试题之二维数组中的查找

实现在一个二维数组中查找一个数字,常规的思想是查找的数字刚好是关键值;查找的数字比关键值小,说明当前值在关键值的左边或者是上面;查找的数字比关键值大摸索名当前值在关键值的右边或者是上边;能不能有一种高效的方法呢? 思路: 首先我们从右上角的数字开始,如果此时查找的数字刚好是我们要找的目标数字,表明查找结束,停止查找;如果此时查找的数字比目标数字大,表明目标数字不在本列,在其左边;继续查找,如果查

2017-05-27 15:37:17 508

原创 计数排序和基数排序

前看我们知道插入排序和选择排序或者是快速排序这些都是比较排序,但有的时候我们不希望通过比较如何让一个序列是有序呢? 一:计数排序 计数排序的思想: 1:开一个数组用来保存每一个数字出现的次数;统计次数我们可以用直接定址的哈希来确定可以减小空间的浪费. 2:根据每一个元素出现的次数,按照下标在原数组中排列,这样这组数据就有序 开空间时我们可以根据遍历找到最大值和最小值来确定空间的范围ra

2017-05-26 00:28:29 351

原创 快速排序及其优化

快速排序的算法: 所谓的快速排序实际上用的是分治思想,将这个数组分成两个部分,左边部分的数据都比右边部分的数据要小,再按照此方法对子区间进行划分进行快速排序; 算法思想是: 1:开始时设置两个变量left,right,给定一个关键值key=a[right]; 2:left向后移,找到第一个比key值大的数,否则继续向后走, 3:right向前移,找到第一个比key小的数,否则继续向前走;

2017-05-22 15:59:42 760

原创 选择排序

一:选择排序的算法思想是 每一次在一组数中选最大的放到最后,然后再在剩余的数中选次大的数放到倒数第二个位置,直到这组数选完为止;(以升序为例) 二:优化: 传统的简单选择排序,每趟循环只能确定一个元素排序后的定位。我们可以考虑改进为每趟循环确定两个元素(当前趟最大和最小记录)的位置,从而减少排序所需的循环次数。改进后对n个数据进行排序,最多只需进行[n/2]趟循环即可。 思路: 1:首先标

2017-05-21 21:28:11 430

原创 二叉树的面试题

二叉树的定义:template<class T> struct BinaryTreeNode { T _data; BinaryTreeNode<T> *_left; BinaryTreeNode<T> *_right; BinaryTreeNode(const T&data) :_data(data) , _left(NULL)

2017-05-14 22:20:50 421

原创 面试题之--大数据

1:给一个超过100G大小的long file,long中存着IP地址,设计算法找到次数最多的IP地址: 现实问题: (1)我们知道计算机的内存在4G,可以存放大约16G的字节的内容,因此要想把100G的大文件存到计算机中,基本不可能 (2)我们可以使用前面讲的位图,一个整形32位,最多可以存42亿多的数据,100G的大文件,最多需要3.2G就可以放进去,但是却难以统计最多的IP地址 这时候

2017-05-12 20:42:50 548

原创 直接插入排序和希尔排序

一:插入排序 在一组无序的数组中,假设第一个有序,每一次数组中剩余的元素与第一个比较,然后逐个插入到一个有序的序列中,直到这个数组所有的数字有序为止; 二:直接插入算法 算法思路: 1:我们先假设第一个有序的数字下标为end, 2:下一个要插入的数字(tmp)继续构成有序就直接插入,此时end向后挪一位, 3:继续插入元素,如果下一个插入的数字和第一个不成构成有序,先与前一个元素交换

2017-05-10 21:44:40 384

原创 一个数组实现两个栈

问题描述: 用一个数组实现两个栈 方法一: 将两个栈对应的元素在数组中按照奇偶排列,如:假设栈1按照奇数位排列,栈2按照偶数位排列 这种方法有一种缺陷就是当两个栈的元素相同时就无法按照奇偶进行排列; 方法二: 从中间向两边,栈1向数组的首部移动,栈2向数组的尾部移动,当有任何一个栈增加到首部或者是尾部时数组开始增容; 方法二似乎解决了两个栈元素相同的问题,如果一个栈先到达首部或

2017-05-04 22:07:51 937

原创 队列和栈的面试题

一:实现一个栈,要求实现Push,Pop,Min的操作时间复杂度是O(1); 我们知道栈的特点是后进先出 Push和Pop的操作都是O(1);要返回最小值Min的时间复杂度是O(1),需要一个辅助栈,用来保存最小值; 思想: 有两个栈s1和s2,其中s2是辅助栈(用来保存最小值的栈) 1:先把元素压入栈1,在比较压入的元素与保存最小值的(栈2)的栈顶元素的大小,始终保持,最小值在栈2.

2017-05-01 13:51:10 460

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除