A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 荣斌   /  2015-9-2 15:41  /  7183 人查看  /  38 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

折半查找,然后把返回值改成min
回复 使用道具 举报
List lt = new LinkedList();

                List lt2 = new LinkedList();
//
                for (int j = 0; j <= 9; j++) {
                        lt.add("a" + j);
                }
                System.out.println(lt);

//                Collections.shuffle(lt);//随机排序
//               
//                System.out.println(lt);
//               
//                Collections.reverse(lt);//逆序
//                System.out.println(lt);
//                System.out.println(lt);
//                Collections.reverse(lt);//逆序
//                Collections.reverse(lt);//逆序
                Collections.sort(lt);
                System.out.println(lt);
                //必须滴排序后才能折半查找
                System.out.println(Collections.binarySearch(lt, "a0"));
               
               

大哥把分给我吧!
回复 使用道具 举报
有序的数组
1,判断数组的长度.
2,通过折半查找找到位置.
3,插入数组,把后半数组依次后移(用for循环).
基本OK了.就是这个思路.
回复 使用道具 举报
用indexOf()
回复 使用道具 举报
你没好好看基础视频吧,毕老师讲数组时专门解决了这个问题
回复 使用道具 举报
Java_EE 来自手机 中级黑马 2015-9-10 15:27:35
26#
二分查找法
回复 使用道具 举报
我也来学习一下
回复 使用道具 举报
用二分查找,虽然找不到,但是最终的指向就是你要插入的位置,获取索引,在该索引插入要插入的数据即可!!!
回复 使用道具 举报
用二分查找查找该元素,(虽然查不到)获取最终索引,在该索引下插入要插入元素即可!!!
回复 使用道具 举报
用二分查找,获取(返回)查找的最终索引。在该索引下插入即可
回复 使用道具 举报
遍历有序数组和它比较,比他小的继续比较,比它大的停,插入这个数的后面。。。
或者看毕老师的视频,折半查找法
回复 使用道具 举报
a334 中级黑马 2015-9-14 20:24:13
32#
这个简单,从第一个书开始比较找到一个合适的位置以后,将这个位置后面的数都往后移。不过这样实现数组长度要至少留一位给这个数。后面学到容器(Collection类)的话,会比较方便,用Iterator对象做迭代器,可以方便的实现对容器内元素的便利操作。其中的原理 有点类似于指针。
回复 使用道具 举报
插入排序
回复 使用道具 举报
此问题已解决
回复 使用道具 举报
排序,再二分查找可以吗?
回复 使用道具 举报
最简单的方法就是遍历一遍数组,找到合适的位置,但是这样效率低,可以利用二分查找的方法,找到合适的位置
回复 使用道具 举报
折半查找效率高
回复 使用道具 举报
Arron 中级黑马 2015-9-25 23:04:31
38#
public class ZheBan {
        public static void main(String[] args) {
                int[] arr = {1,3,5,8,10,15,46};
               
                System.out.println(getIndex(arr, 10));
        }
        /*
         * 折半排序
         */
        public static int getIndex(int[] arr,int key){
                int max = arr.length-1,min = 0,mid;
                while (min <= max) {
                        mid = (min + max) / 2;
                        if (key > arr[mid]) {
                                min = mid + 1;
                        }else if (key < arr[mid]) {
                                max = mid -1;
                        }else{
                                return mid;
                        }
                }
                return min;
        }
}
回复 使用道具 举报
黑马币哟  ~亲
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马