Red de conocimiento informático - Aprendizaje de programación - Clasificación binaria de Java

Clasificación binaria de Java

La clasificación binaria es el proceso de encontrar primero elementos mediante la búsqueda binaria y luego ordenarlos mediante otro algoritmo de clasificación.

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>

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]){

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>

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)

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;

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.