zoukankan      html  css  js  c++  java
  • 查找有序二维数组中的元素

    给定一个已排序的二维数组array,在其中查找一个元素value

    查找策略如下图:

    (1)将value和数组的右上角的值比较,如果大于右上角的值,则移除数组的第一行。

    (2)将value和数组的左下角的值比较,如果大于左下角的值,则移除数组的第一列。

    (3)直到查找完毕,已经找不到符合(1)(2)的情况后,或者数组只剩下一个元素

    (4)得到一个较小的二维数组,再遍历该数组即可。

     

               

     

    /**
     * Created by wuchao on 17-3-29.
     */
    import javax.swing.text.html.HTMLDocument;
    import java.util.*;
    public class test {
        public static int arr[][] = {{1,2,3,4},{5,6,7,8},{9,10,12,13},{14,15,16,17}};
        public static void main(String[] args) {
    
            System.out.println(find(arr,1));
        }
        public static boolean find(int[][] array,int value){
            if(array==null) return false;
            int m = array.length;//行
            int n = array[0].length;//列
            int[] right = {0,n-1};//右上角
            int[] left = {m-1,0};//左下角
            while(true){
                if(right[0]==left[0]&&right[1]==left[1]){
                    if(array[right[0]][right[1]]==value){
                        return true;
                    }else{
                        return false;
                    }
                }
                if(array[right[0]][right[1]]<value){
                    right[0]=right[0]+1;
                }else if(array[left[0]][left[1]]<value){
                    left[1]=left[1]+1;
                }else{
                    //跳法这里说明已经找完
                    break;
                }
            }
            for(int i=right[0];i<=left[0];i++){
                for(int j=left[1];j<=right[1];j++){
                    if(array[i][j]==value) return true;
                }
            }
            return false;
        }
    }
    
  • 相关阅读:
    [Linux] Ubuntu Server18 python3.7 虚拟环境
    [Linux] 树莓派编译python3.7.4
    [Linux] TMUX Python版本设置
    Linux 批量杀进程的命令
    arm树莓派Raspbian 下安装selenium+chrome
    树莓派Raspbian系统密码
    mac 终端查看端口命令
    selenium firefox 内存 速度优化
    [Linux] tmux 终端复用命令行工具
    通过 ssh 登录到手机 Termux
  • 原文地址:https://www.cnblogs.com/wuchaodzxx/p/6689415.html
Copyright © 2011-2022 走看看