Red de conocimiento informático - Aprendizaje de programación - Lenguaje de programación intermedio

Lenguaje de programación intermedio

La idea para resolver este problema es: dado que la matriz A no está dispuesta en orden descendente, generalmente se realiza primero una búsqueda binaria, pero se debe encontrar el subíndice de la primera X y luego eliminarlo.

Intbitsearch (int a [], int x, int left, int right) {/* biseca la posición de la primera aparición de x en el área de izquierda a derecha de la matriz A y regresa -1* /

int mid, I;

while(left lt;=right){

mid = (izquierda y derecha)/2;

if(a[mid]= = x)break;

if(a[mid] gt; x)right=中1;

if(a [mid] lt; x)left = mid 1;

}

if(left gt;right)return-1;

for(I = mid ;i gt=left amp ampa[I] = = x;i-);//Encuentra la posición de la primera x.

Devolver I 1;

}

void Romove(int a[], int *longitud, int index) {

int I;

if(index lt; 0 | | index gt= *length) regresa; //La posición eliminada excede el límite.

for(i = índice; i lt* longitud-1; i )a[I]= a[I 1];

*longitud-;

}

void delSq(int a[], int x, int *longitud) {

int index = BitSearch(a, x, 0, * longitud-1);

Eliminar (a, longitud, índice

}

;