面试题目-堆排、快排、二分查找
来源:互联网 发布:adc0804中文数据手册 编辑:程序博客网 时间:2024/04/29 22:13
近期在忙着找工作,由于专业跨度的原因,稍微有些焦头烂额,在方向上有些失衡。有种很奇怪的感觉,我不知道换联网公司到底需要什么样的人才,(/ □ \),好了,吐槽结束了,该继续得还得继续,工作还得继续努力找,希望自己好运吧。
上周面试了一家比较不错的互联网公司,这可能是自己离互联网公司最近的一次了,之前去面过一次爱奇艺,但是,由于对linux下的网络异步通讯这一块不熟,给很快请出来了。。。
感觉这家的氛围和环境我十分喜欢,如果有机会我就去了,不过自己在HR面试时的表现真的很糟糕 - -
排序算法
遗憾的是对于堆排序没有做准备,快排倒是因为经常画画,没有压力,回来了痛心疾首,把程序好好写一遍: 堆排序+快速排序。
堆排序
堆排序的思路不再赘述了,直接贴代码吧
template <typename T>void HeapMentains( T array[], int start, int end ){ int lchild = 2*start+1; int rchild = lchild+1; int large = start; if ( lchild <= end && array[start] < array[lchild] ) { large = lchild; } if ( rchild <= end && array[large] < array[rchild] ) { large = rchild; } if ( large != start ) { swap( array[large], array[start] ); HeapMentains( array, large, end ); }}template <typename T>void HeapSort( T array[], int size ){ int end = size - 1; int pos = end/2; for ( int i=pos; i!=-1; --i ) { HeapMentains( array, i, end ); } for ( int i=end; i!=0; --i ) { swap( array[0], array[i] ); HeapMentains( array, 0, i-1 ); }}
快速排序
template <typename T>int partition( T array[], int start, int end ){ T key = array[end]; int index = start - 1; while ( start != end ) { if ( array[start] < key ) { ++ index; swap( array[index], array[start] ); } ++ start; } ++ index; swap( array[index], array[end] ); return index;}template <typename T>void QuickSort( T array[], int start, int end ){ if ( start < end ) { int partition = Partition( array, start, end ); QuickSort( array, start, partition-1 ); QuickSort( array, partition+1, end ); }}
二分查找
经典的查找,用递归的方式实现,不容易出错,代码如下:
template <typename T>int BinarySearch( T array[], int start, int end, T &val ){ if ( start <= end ) { int mid = ( start+end )/2; if ( array[mid] == val ) { return mid; } else if ( array[mid] < val ) { return BinarySearch( array, mid+1, end, val ); } else { return BinarySearch( array, start, mid-1, val ); } } return -1;}
0 0
- 面试题目-堆排、快排、二分查找
- Java基础算法:堆排,快排,二分查找
- 快排 + 二分查找
- 快排,二分查找
- 快排,二分查找
- 快排和二分查找
- 快排&归并&二分查找
- SDUT2040 快排与二分查找
- 二分查找与快排算法
- python 实现快排及二分查找
- 快排、堆排序
- 快排 + 二分
- 二分 + 快排
- 【面试准备】快排
- 面试 快排
- 排序(快排,归并,堆排)
- 快排,堆排序,折半查找算法(Java版)
- sort(排序) qsort(快排) bsearch(二分查找)
- Java反射
- web表单重复提交验证
- ZF-net
- PHP中POST和GET的区别
- IOS开发系列——Objective-c Runtime专题总结【整理】
- 面试题目-堆排、快排、二分查找
- Caffe + Ubuntu14.04 64bit(位)+ Cuda6.5/Cuda7.0 安装配置教程
- 高性能Mysql笔记(一)
- iOS:使用minimumScaleFactor控制字体大小自适应
- iOS UI UIView基础概况
- duilib库的点九技术
- HDU2085核反应堆
- OC中Block的原理、实现及注意事项
- Object类equals()和hashCode()方法与集合类的联系