几种常见算法,面试经常考
2017-04-28 11:21
176 查看
最近在面试 每次总有几道算法题。算法 这种东西啊, 没有深入骨髓几天不用就忘了,现在来记录下。
求最值:
选择排序:
冒泡排序:
直接插入排序
二分查找:
求最值:
int a[]={21,213,55,78}; int max=a[0]; for(int k=0;k<a.lenth;k++){ if(max<a[k]){ max=a[k]; } }
选择排序:
for(int i=0;i<a.lenth-1;i++){ for(int j=i+1;j<a.lenth;j++){ if(a[i]<a[j]){ int tmp =a[j]; a[j]=a[i]; a[i]=tmp; } } }
冒泡排序:
for(int i=0;i<a.lenth-1;i++){ for(int j=0;j<a.lenth-1-i;j++){ if(a[j+1]<a[j]) { int temp=a[j]; a[j+1]=a[j]; a[j]=a[j+1]; } } }
直接插入排序
for(int i=1;i<a.lenth;i++){ int j=i-1; int temp=a[i]; for(;j>=0&&temp<a[j];j--){ a[j+1]=a[j]; //大于temp整体后移 } a[j+1]=temp; //最低位 }
二分查找:
//循环形式 public static int binarySearch(int[] arr, int x) { int low = 0; int hight = arr.length - 1; while (low <= hight) { int middle = (hight + low) / 2; if (x == arr[middle]) { return middle; } else if (x < arr[middle]) { hight = middle - 1; } else if (x > arr[middle]) { low = middle + 1; } } return -1; } //递归形式 protected static int binarySearch(int[] arr, int x, int beginIndex, int endIndex) { // 升序的数组 int midIndex = (beginIndex + endIndex) / 2; if (x < arr[beginIndex] || x > arr[endIndex] || beginIndex > endIndex) { return -1; } if (x < arr[midIndex]) { return binarySearch(arr, x, beginIndex, endIndex - 1); } else if (x > arr[midIndex]) { return binarySearch(arr, x, beginIndex + 1, endIndex); } else { return arr[midIndex]; } }
相关文章推荐
- 常见面试算法和数据结构题(经常更新)
- 几种常见算法的介绍及复杂度分析(转)
- 几种常见的排序算法之比较
- 面试中常见的一些算法问题
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-1
- 几种常见模式识别算法整理和总结
- 几种常见算法的介绍及复杂度分析
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-5(question?)
- 几种常见模式识别算法整理和总结
- 几种排序算法(面试时经常要考的)
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-3(question?)
- 列举网页转向的几种方式(面试中经常提到的问题)
- 几种常见算法的JAVA实现
- 求两个集合差的几种常见算法
- 几种常见模式识别算法整理和总结
- 几种常见算法的介绍及复杂度分析
- 几种常见算法的介绍及复杂度分析
- 面试中经常出现的算法
- 几种常见统计指标算法
- 《妙趣横生的算法》第10章 算法设计与数据结构面试精粹之常见的算法设计题10-4(question?)