Combinar dos matrices ordenadas (Java + Python)

Dadas dos matrices ordenadas arr1 y arr2, combine las dos matrices en una matriz ordenada.

arr1 = [1, 3, 5]
arr2 = [2, 4, 8, 9]
salida: [1, 2, 3, 4, 5, 8, 9]

Ideas:

1. Después de fusionar y clasificar, puede pensar en ello. (No se usa)
2. Ambas matrices están en orden, solo compare el tamaño en orden.

Puede declarar dos punteros de índice de matriz similares a la ordenación por combinación, atravesar las dos matrices respectivamente, comparar los valores, colocar el valor más grande (más pequeño) en la matriz de destino y continuar con el recorrido.
Java:

public static void main(String[] arg){
    
    
        int[] arr1 = {
    
    1,  3, 5};
        int[] arr2 = {
    
    2, 4, 8, 9};
        int[] arrs = new int[arr1.length + arr2.length];
        int i = arr1.length - 1, j = arr2.length - 1, k = arr1.length + arr2.length -1;
        while (i >= 0 && j >= 0){
    
    
            arrs[k--] = arr1[i] >= arr2[j] ? arr1[i--] : arr2[j--];
        }
        while (i >= 0){
    
    
            arrs[k--] = arr1[i--];
        }
        while (j >= 0){
    
    
            arrs[k--] = arr2[j--];
        }

        System.out.println(Arrays.toString(arrs));
    }

Pitón:

def Order_sort(arr1, arr2):
    rel = []
    i = j = 0
    while i < len(arr1) and j < len(arr2):
        if arr1[i] <= arr2[j]:
            rel.append(arr1[i])
            i += 1
        else:
            rel.append(arr2[j])
            j += 1
    while i < len(arr1):
        rel.append(arr1[i])
        i += 1
    while j < len(arr2):
        rel.append(arr2[j])
        j += 1
    return rel


if __name__ == '__main__':
    arr1 = [1, 3, 5, 8, 10]
    arr2 = [2, 4, 8, 9]
    print(Order_sort(arr1, arr2))

输出:[1, 2, 3, 4, 5, 8, 8, 9, 10]

La fusión a una nueva matriz se puede recorrer desde el principio o el final. Los siguientes dos bucles consideran los dos casos restantes de arr1 y arr2, y asignan los elementos restantes de la matriz a la nueva matriz. Python también puede comparar el primer elemento o el último elemento de cada ciclo, asignar los elementos requeridos a una nueva lista, eliminarlos y continuar atravesando.

Supongo que te gusta

Origin blog.csdn.net/qq_43325582/article/details/121364636
Recomendado
Clasificación