欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分查找vc线性查找

程序员文章站 2024-03-20 10:50:28
...
public static int binarySearch(int[] args ,int key ){
           
           int upNum = args.length -1;
           int lowNum =0;
           int mid = lowNum +(upNum-lowNum)/2;
/**int mid =(low + high) 
             * 2;在一般情况下, 这个语句是不会出错的, 但是, 当low+high的值超过了
             * 最大的正int值 (231 - 1) 的时候, mid会变成负值,  这个时候, 会抛出
             * ArrayIndexOutOfBoundsException 异常..
             */
           int midValue =args[mid];
           if(midValue >key){
                 upNum =mid -1;
           }else if(midValue < key){
                 lowNum = mid +1;
           }else{
              return key;
           }
           return -(low+1);//找不到
}
  /**
     * 线性查找
     * 从args中查找key;返回查找到的次数
     * foreach
     */
    public int linearSearch(int[] args, int key) {
        long beginTime = System.currentTimeMillis();
        System.out.println(beginTime);
        System.out.println(System.currentTimeMillis());
        int m = -1;
        for (int n : args) {
            System.out.println("--------------");
            System.out.println(n + "***");
            if (n == key) {
                System.out.println("--------------");
                System.out.println("找到");
                long endTime = System.currentTimeMillis();
                System.out.println(endTime);
                System.out.println(endTime - beginTime);
                return m = n;
            } else {
                continue;
            }
        }
        return m;
    }
    static int sequenceSearching(int[] arr, int len, int key) {
        int i;
        for (i = 0; i < len && arr[i] != key; i++);
        if (i < len) {// 找到了,因为arr[i]==key
            System.out.println(i);
            return i;
        } else {//没找到
            return -1;
        }
    //return (i<len)?(i):(-1);
    }

 

相关标签: VC++