Clasificación binaria de Java
display();
// System.out. println(arr.median());
// arr.noDups();
arr. noDups2();
arr.noDups2();
Ar.display()
}
}
clase InsArray {
privado int[] a;
privado int nElems;
público InsArray(int tamaño) {
a = new int[tamaño];
nElems = 0;
}
inserción de vacío público (valor int) {
a[nElems] = valor;
nElems++;
}
public void display() {
for (int i = 0 ; i < nElems; i++) {
System.out.print(a[i] + " ");
}
System.out.println ();
}
public void insertSort() {
int salida, entrada;
int copia = 0; p> p>
int comparar = 0;
/* for(out = 1;out int tmp = a[out]; entrada = salida; while(entrada>0&&a[entrada-1]>=tmp){ a[entrada] = a[entrada-1] ; --in; } a[in] = tmp }*/ for (out = 1;out int tmp = a[out]; in = out; while( en> 0){ if(a[en-1]>=tmp){ a[en] = a[en-1]; - -in; ++copiar; ++comparar;} else{ romper; } } ++comparar; a[in] = tmp; } System.out.println(" copiar:" + copiar + "comparar:" + comparar); } public int mediana(){ insertSort (); int m = nElems/2; return a[m]; } public void noDups () { insertSort(); /* InsArray tmp = nuevo InsArray(nElems); for(int i = 0 ;i s;i++) { for(int j = i+1;j if(a[i] == a[j]){ p> a[j] = -1; } if(a[i]!= -1) tmp.insert( a[i]); } */ InsArray tmp = new InsArray(nElems); int i; for(int j = 0;j /*if(tmp.nElems==tmp.find(this.a[j])) // Búsqueda binaria tmp.insert(this.a[j]); else continuar;*/ para ( i = 0; i < tmp.nElems; i++) { // para cada elemento if(tmp.a[i]==this.a[j]) // encontró searchKey ? p> p> break; } if(i==tmp. nElems) // no tmp.insert(this.a [j ]); } this.a = tmp.a; this.nElems = tmp.nElems; } public int find( clave de búsqueda larga) { int límite inferior = 0; int límite superior = nElems-1; int curIn; while(true) { curIn = (límite inferior + límite superior)/2 if(a[curIn]==clave de búsqueda) p> devuelve curIn; else if(límite inferior>límite superior) devuelve nElems; else { if( a[ curIn]>searchKey) límite superior = curIn-1 else límite inferior = curIn+1; } } > public void noDups2(){ insertSort(); for(int i = 0;i for(int j = i+1; j if(a[i] == a[ j]){ a[j] = -1; } } display(); int index = 0; p> for(int i=0;i if(a[i]! =-1){ index++; }else{ for(int j=index+1;j if(a[j]!=-1){ a[índice] = a[j]; a[j]=-1; index++; descanso; } } } nElems = index }< } El código anterior Lo escribí antes, en el que el método find () es una búsqueda binaria y luego se ordena mediante ordenación por inserción.