Swift con Xcode utiliza la ordenación de burbujas, el método de ordenación de matriz personalizada <Any>, y devuelve la matriz ordenada

Swift con Xcode utiliza la ordenación de burbujas, el método de ordenación de matriz personalizada <Any>, y devuelve la matriz ordenada

1. Idea de diseño:

    1. Defina un método que acepte un parámetro de matriz variable y una declaración de método variable identificada por inout (la función de los métodos variables: comparación de valores de parámetros)

        Descripción del parámetro del método:

        1-1. El parámetro de matriz se debe establecer como un parámetro variable con una marca de entrada antes del tipo, de modo que el valor de índice del parámetro de matriz se pueda transponer, de lo contrario, el parámetro en Swift es inmutable y solo se puede definir uno en el cuerpo del método La nueva variable asigna los parámetros de datos a la variable recién definida;

        1-2. La función del método variable sortClosure, utilizado para juzgar la comparación de tamaño del valor de índice especificado de la matriz, si devuelve verdadero, la matriz no se transpondrá ni se transpondrá

            Descripción del parámetro del método sortClosure:

            1-2-1. Acepte dos valores de objeto de cualquier tipo, utilizados para pasar parámetros del objeto de posición de índice del método mySortedArray, y devuelva el valor Bool

    2. Tipo de retorno: matriz ordenada

Segundo, el código de implementación

func mySortedArray (matriz de matriz: inout Array <Any>, sortClosue: (Any, Any) -> Bool) -> Array <Any> 

{ 

    for i in 0 .. <array.count { 

        // si solo hay una diagonal en la matriz Luego salte del ciclo 

        si 0 == array.count-1 

        { 

            break 

        } 

        // El ciclo for en Swift no necesita considerar las variables i y j nulas o fuera de límites, Swift manejará automáticamente 

        j en i + 1 .. <array.count 

        { 

            if sortClosue (array [i], array [j]) {} 

                // Si el valor de contraste es falso, intercambie la posición del valor especificado Val del índice de datos 

            else { 

                array.swapAt (i, j) 

            } 

        } 

    } 

    return array 

}

3. Prueba de escena

        1. Prueba de matriz interna

var list: Array <Any> = [3,5,2,1,4,2,53,2,4,787,5,4,3] 

            list = mySortedArray (数组: & list, sortClosue: {(minVal: Any, maxVal : Cualquiera) a cambio 

                maxVal as! Int> minVal as! Int}) 

            print (list)

        2. Prueba de matriz de objetos

clase Estudiante { 

                nombre var: String // 姓名

                var logro: UInt // 成绩

                init (nombre: String, logro: UInt) { 

                    self.name = nombre 

                    self.achievment = achievment 

                } 

            } 

 

            var stuArr: Array <Any> = [Estudiante .init (nombre: "明月", logro: 98), Student.init (nombre: "赵 六", logro: 89), Student.init (nombre: "落花", logro: 96), Student.init (nombre : "阿良", logro: 90), Student.init (nombre: "张三", logro: 78)] 

 

            stuArr = mySortedArray (数组: & stuArr, sortClosue: {($ 0 como! Estudiante) .achievment> ($ 1 como ! Estudiante).logro}) 

 

            para estudiantes en estuArr 

            {

                print ((estudiante como! Estudiante) .name, (estudiante como! Estudiante) .achievment) 

            }

  

Supongo que te gusta

Origin www.cnblogs.com/CoolBreeze-SeclusionDream/p/12757738.html
Recomendado
Clasificación