算法和数据结构在面试中备受面试官的青睐,其中排序和查找是面试中考察算法的重点。
在准备面试的时候,我们应该重点掌握二分查找、快速排序和归并排序,做到能随时正确、完整地写出代码。
查找和排序都是在程序设计中常用到的算法。关于查找算法应该掌握:顺序查找、二分查找、哈希表查找和二叉排序树查找,特别应该重点学习的是二分查找和哈希表查找。二分查找可以灵活的运用在许多查找场景中,所以比较重要。同时,哈希表查找由于是最快的查找算法,时间复杂度是O(1),所以也很重要。
一、查找
(1)二分查找算法
特别注意:在面试的时候,不管是用循环还是递归,面试官都希望面试者能够完整正确的写出二分查找代码。
/**
* 二分查找算法
* @param array 查找的有序数组
* @param key 待查元素
* @return
*/
public static int binSearch(int[] array, int key) {
int low = 0;
int high = array.length - 1;
while(low <= high) {
int mid = (low + high)/2;
if(array[mid] == key) {
return mid;
}else if(array[mid] < key) {
low = mid + 1;