java面试题:数组的常用算法实现
来源:互联网 发布:java函数调用关系图 编辑:程序博客网 时间:2024/06/06 09:59
package com.bxh.array;public class ArrayTest {private static int max(int m,int n) {return m>n?m:n;}private static int min(int m, int n) {return m>n?n:m;}//递归查找数组中最大的数private static int findMax(int[] num,int begin) {// TODO Auto-generated method stubint n=num.length;int len=n-begin;if(len==1){return num[begin];}else{return max(num[begin],findMax(num,begin+1));}}//直接查找法:求数组中一个数字减去它右边子数组中的一个数字中最大的差值private static int getmax(int[] a) {// TODO Auto-generated method stubint n=a.length;if(a==null || n<=1){return Integer.MIN_VALUE;}int max=Integer.MIN_VALUE;for (int i = 0; i < n-1; i++) {for(int j=i+1;j<n;j++){if(a[i]-a[j]>max){max=a[i]-a[j];}}}return max;}//动态规划实现差值最大方法private static int getMax1(int[] a) {// TODO Auto-generated method stubint len=a.length;int[] diff=new int[len];int[] max=new int[len];if(a==null || len<=1){return Integer.MIN_VALUE;}diff[0]=Integer.MIN_VALUE;max[0]=a[0];for(int i=1;i<len;i++){diff[i]=max(diff[i-1],max[i-1]-a[i]);max[i]=max(max[i-1],a[i]);}return diff[len-1];}//对数组的两个子有序段进行合并private static void sort1(int[] a, int mid) {int len=a.length;for (int i = 0; i < mid; i++) {if(a[mid]<a[i]){swap(a,i,mid);for(int j=mid;j<len-1;j++){if(a[j+1]<a[j]){swap(a,i,i+1);}}}}}private static void sort(int[] a, int mid) {// TODO Auto-generated method stubint tmp;for (int i = 0; i < mid; i++) {if(a[mid]<a[i]){swap(a,i,mid);findRightForMid(a,mid);}}}private static void findRightForMid(int[] a, int mid) {int len=a.length;for(int i=mid;i<len-1;i++){if(a[i+1]<a[i]){swap(a,i,i+1);}}}//交换两个函数private static void swap(int[] a, int i, int j) {// TODO Auto-generated method stubint tmp;tmp=a[i];a[i]=a[j];a[j]=tmp;}//求数组中两个元素的最小距离private static int minDistance(int[] a, int m, int n) {// TODO Auto-generated method stubif(a==null){return Integer.MIN_VALUE;}int len=a.length;int m_index=-1;int n_index=-1;int min_dist=Integer.MIN_VALUE+1;for(int i=0;i<len;i++){if(a[i]==m){m_index=i;}if(n_index>=0){min_dist=min(Math.abs(n_index-m_index),Math.abs(min_dist));}if(a[i]==n){n_index=i;}if(m_index>=0){min_dist=min(Math.abs(n_index-m_index),Math.abs(min_dist));}}return min_dist;}public static void main(String[] args) {int[] num={2,3,4,5,5,3,5,7,4,3,2};System.out.println("=================递归查找数组中最大的值===================");int result=findMax(num,0);System.out.println(result);System.out.println("=================动态规划实现差值最大方法==================");int max=getMax1(num);System.out.println(max);System.out.println("=================两个元素中最小距离======================");System.out.println(minDistance(num,3,5));System.out.println("=================对数组的两个子有序段进行合并===============");int[] a={1,5,6,7,15,2,4,8,10,13,14};//sort(a,5);sort1(a,5);for (int i = 0; i < a.length; i++) {System.out.print(a[i]+" ");}}}
阅读全文
0 0
- java面试题:数组的常用算法实现
- 有关递归算法的面试题java实现
- java常用面试题
- 常用Java面试题
- 常用Java面试题
- 常用Java面试题
- 常用Java面试题
- 常用java面试题
- 常用Java面试题
- java常用面试题
- Java 常用面试题
- Java常用面试题
- java常用面试题
- Java数组中常见的面试题
- Java数组中常见的面试题
- Java常用的面试笔试题
- 几个常用的Java面试题
- 整理几个常用的Java面试题
- DevOps实践-打造自服务持续交付 -下
- Git学习笔记(5)----基本操作及命令(远程仓库篇)
- 机器学习笔记——决策数实现及使用Graphviz查看
- Hadoop集群之hive安装
- Android service里面启动activity和alertdialog
- java面试题:数组的常用算法实现
- 明白了一句话:“加速度信号对高频敏感,位移信号对低频敏感”
- Bigtable: A Distributed Storage System for Structured Data : part7 Performance Evaluation
- 方法递归调用
- 软件架构的一些心得
- 查找表问题(c++)
- 研判个股几个重要的维度
- WPF界面设计知识点整理
- ElasticSearch学习笔记-同义词记录