二分查找找下标或者值
2015-10-20 22:04
218 查看
public class Util { //求最大值 public static int maxValue(int a,int b){ int max=0; if(a>b){ max=a; }else{ max=b; } return max; } //求最小值 public static int minValue(int a,int b){ int min=0; if(a>b){ min=b; }else{ min=a; } return min; } //选择排序 public static int[] selectSort(int[] a){ //这个地方的min的意思是默认每次排序的那个min为下坐标 而不是都是0 所以应该放在for循环里面 // int min=0; int n=a.length; for(int i=0;i<n-1;i++){ int min=i; for(int j=i+1;j<n;j++){ if(a[min]>=a[j]){min=j;} } if(i!=min){ int temp=a[min]; a[min]=a[i]; a[i]=temp; } } return a; } //二分查找找出下标 public static int middleSort(int value,int[] a){ // boolean boo=false; int mid=a.length/2; int min=0; int i=1; int max=a.length-1; while(i<a.length){ i++; if(value>a[mid]){ min=mid; mid=(min+max)/2; System.out.println("one"+i); // mid=(mid+max)/2; } else if(value<a[mid]){ max=mid; mid=(max+min)/2; System.out.println("two"+i); // mid=(mid+min)/2; }else if(value==a[mid]){ // boo=true; break; } } System.out.println("i"+i); return mid; } //二分查找排好序列里面是否有那个值 public static boolean isValueByMiddle(int value,int []a){ boolean boo=false; int min=0; int max=a.length-1; int i=1; // int mid=a.length/2; while(max-min>1){ i++; int mid=(min+max)/2; // System.out.println("mid"+mid); if(value>a[mid]){ min=mid+1; // mid=(min+max)/2; // System.out.println("one"+i); } else if(value<a[mid]){ max=mid; // mid=(min+max)/2; // System.out.println("two"+i); } else if(value==a[mid]){ // System.out.println("in true"); boo=true; break; } } System.out.println("i"+i); return boo; } }
相关文章推荐
- iOS KVC 集合操作
- Django MiddleWare
- 初识链表
- java向前引用
- Mac下使用微信Android资源混淆打包工具
- hadoop secondarynamenode的作用
- Spark调优
- Android-教你自作一个简单而又实用的流式Tag标签布局
- C++小结
- hive select查询语句
- 内核对象
- 台积电砸1000亿元建12英寸晶圆厂:2018年量产--OFweek
- 商城数据库建表
- 跑马灯程序
- js常用内置方法和对象
- hdu1430 (bfs)
- android开源项目框架大全:《IT蓝豹》
- window对象
- Unity Shader UV动画(序列帧动画)
- iOS绘制渐变背景滑动条