Java 线性搜索技术

Java 线性搜索技术,java,algorithm,linear-search,Java,Algorithm,Linear Search,我正在编写一个程序,该程序读入一个包含N行N列整数的方阵的文件。文件的第一行包含一个值,该值指定网格其余部分的“大小”为N。例如,如果第一行包含“10”,则其余行形成10x10矩阵。我的程序应该显示使用“蛮力”线性技术O(N^2)查找(或不查找)给定元素所需的比较总数。 示例c:\temp\input.txt: 十, 1 5 8 13 16 18 22 28 29 69141922232334 1114152024262731439 1621232803435363944 17252632364

我正在编写一个程序,该程序读入一个包含N行N列整数的方阵的文件。文件的第一行包含一个值,该值指定网格其余部分的“大小”为N。例如,如果第一行包含“10”,则其余行形成10x10矩阵。我的程序应该显示使用“蛮力”线性技术O(N^2)查找(或不查找)给定元素所需的比较总数。 示例c:\temp\input.txt:

十,

1 5 8 13 16 18 22 28 29

69141922232334

1114152024262731439

1621232803435363944

17252632364143474953

1928303540444495356

23313338434852586061

27 34 35 41 44 52 55 59 61 65

293840444554606667

33414647515961697080

示例(作为Java应用程序):

java program.class c:\temp\infle.txt 59

使用线性搜索在68次比较中发现58次

这是我的密码

   public static int[][] create2DIntMatrixFromFile(String filename) throws Exception {

    int[][] matrix = null;
    String line;
    int size = buffer.read();
    int row=0;
    while ((line = buffer.readLine()) != null) {
    String[] vals = line.trim().split("\\s+");
    if (matrix == null) {
    public static void main(String[] args)
    {
    BufferedReader buffer = new BufferedReader(new FileReader(args[0]));
    int size = buffer.read();
    int[][] matrix = new int[100][100];
    matrix = create2DIntMatrixFromFile(args[0]);
    search1(matrix, size,args[1]);
    matrix = new int[size][size];
    }
    for (int col = 0; col < size; col++) {
    matrix[row][col] = Integer.parseInt(vals[col]);
     }
    }
    row++;
    }
    return matrix;
    }
    void search1(int [][]matrix,int size,int x)
    {
    int count=0,comp=0;
    for(int i=0;i<size;i++)
    { for(int j=0;j<=size;j++)
    if(matrix[i][j]==x) count++;
    comp++;
    }
    System.out.println(count+" found in" + comp + "comparisons using a linear search");
     }
publicstaticint[]create2DIntMatrixFromFile(字符串文件名)引发异常{
int[][]矩阵=null;
弦线;
int size=buffer.read();
int行=0;
而((line=buffer.readLine())!=null){
字符串[]vals=line.trim().split(\\s+);
if(矩阵==null){
公共静态void main(字符串[]args)
{
BufferedReader buffer=新的BufferedReader(新的文件读取器(args[0]);
int size=buffer.read();
int[][]矩阵=新int[100][100];
矩阵=create2DIntMatrixFromFile(args[0]);
搜索1(矩阵、大小、参数[1]);
矩阵=新整数[大小][大小];
}
for(int col=0;col对于(int i=0;i您应该做的第一件事是提供格式良好的代码。从我所了解到的情况来看,您的问题可能是从static main调用非静态方法,所以要么将search1设置为static,要么从类构造函数调用它(您需要创建一个).

为什么要构造矩阵?你可以在获得值时进行过滤…根本不需要存储它们。线性搜索是O(n),而不是O(n^2)。如果你的问题是关于语法错误,请发布错误。我要做的第一件事是缩进代码。如果没有缩进,读取代码并因此查找错误,会困难得多。