Vous êtes sur la page 1sur 2

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);


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];
}

System.out.println("");
System.out.println(Arrays.toString(fila));
}

Vous aimerez peut-être aussi