System.out.println("ingrese la cedula buscada"); String cedula=sc.nextLine(); //ordenado por apellido// String matriz[][]={{"0105643423","stalin javier","benenaula armijos","20 "},{"0100534512","jorge victor","pacheco maldo","17"},{"0101054872","churos gay" ,"cevallos pineda","22"}}; String[] num=new String[4]; for (int i = 0; i < matriz.length; i++) { int pos = i; for (int k = 0; k < matriz[0].length; k++) { num[k] = matriz[i][k]; } while (pos > 0 && num[2].compareTo(matriz[pos - 1][2]) < 0) {/*para ordenar segun nombre o apellido utilize el numero de la columna en ves de 2 aqui en ves de ese 2 le pones el campo si el campo es apellido y esta en la columna 3 contando desde 0 le pones en ves del 2 el 3y listo */ for (int k = 0; k < matriz[0].length; k++) { matriz[pos][k] = matriz[pos - 1][k]; } pos = pos - 1; } for (int k = 0; k < matriz[0].length; k++) { matriz[pos][k] = num[k]; } } for (int i = 0; i < matriz.length; i++) { for (int k = 0; k < matriz[0].length; k++) { System.out.print(matriz[i][k]+" "); } System.out.println(""); } /*codigo de busqueda......... fabian aqui te va a devolver tu fila que c ontiene el dato que tu quieres donde dice "cedula" le cambias por una variable de tipo string obviamente el campo que tu quieras buscar*/ boolean x = false; int cont = 0; int sup = matriz.length - 1; int inf = 0; int mitad = (sup + inf + 1) / 2; while (x == false && inf <= sup) { if (cedula.equals(matriz[mitad][0])) { x = true; } else if (cedula.compareTo(matriz[mitad][0]) < 0) { sup = mitad - 1; } else { inf = mitad + 1; } mitad = (sup + inf + 1) / 2; } String fila[]=new String[4]; for (int i = 0; i < 4; i++) { fila[i]=matriz[mitad][i]; }