English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Analyse de la méthode d'implémentation de l'arrangement des tableaux selon les règles spécifiées dans les problèmes d'algorithmes de Golang

L'exemple de cet article décrit une méthode de tri d'array par règle spécifiée en Golang. Partageons-le avec tous pour la référence, voici les détails :

Donnez un tableau bidimensionnel, trie ce tableau bidimensionnel selon la colonne i (i commence à1Commencer à trier, si la colonne i est la même, les lignes identiques sont triées selon la colonne i+1Les éléments de la colonne sont triés,

si l'élément de la colonne i+1les éléments de la colonne sont également identiques, ils continuent de comparer la colonne i+2colonnes, et ainsi de suite, jusqu'à la dernière colonne. Si les colonnes de l'index i à la dernière colonne sont identiques, elles sont排列 en ordre d'origine.

Exemple d'entrée :

1,2,3
2,3,4
2,3,1
1,3,1

Trier selon la2Tri par colonne, sortie :

1,2,3
2,3,1
1,3,1
2,3,4

Mise en œuvre du code :

package huawei
import (
    "fmt"
    "sort"
)
func Test09Base() {
    nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}}
    firstIndex := 2 //Trier selon la deuxième colonne
    result := arraySort(nums, firstIndex-1)
    fmt.Println(result)
}
//Trier nums selon les règles spécifiées (note : ce firstIndex commence à 0)
func arraySort(nums [][]int, firstIndex int) [][]int {
    //Vérification
    si len(nums) <= 1 {
        retourne nums
    }
    si firstIndex < 0 || firstIndex > len(nums[0])-1 {
        fmt.Println("Attention: Le paramètre firstIndex doit être entre 0 et len(nums)")-1La liste d'origine est retournée.
        retourne nums
    }
    //Trier
    mIntArray := &IntArray{nums, firstIndex}
    sort.Sort(mIntArray)
    return mIntArray.mArr
}
type IntArray struct {
    mArr   [][]int
    firstIndex int
}
//IntArray implémente l'interface sort.Interface
func (arr *IntArray) Len() int {
    return len(arr.mArr)
}
func (arr *IntArray) Swap(i, j int) {
    arr.mArr[i], arr.mArr[j] = arr.mArr[j], arr.mArr[i]
}
func (arr *IntArray) Less(i, j int) bool {
    arr1 := arr.mArr[i]
    arr2 := arr.mArr[j]
    for index := arr.firstIndex; index < len(arr1); index++ {
        if arr1[index] < arr2[index] {
            return true
        } else if arr1[index] > arr2[index] {
            return false
        }
    }
    return i < j
}

J'espère que cette article aidera les gens dans la programmation Go.

Déclaration : le contenu de cet article est来源于网络,appartient au propriétaire original, le contenu est自发贡献并由互联网用户自行上传,le site ne détient pas de propriété intellectuelle, n'a pas été édité par l'homme, et neassume pas de responsabilité juridique en rapport avec cela. Si vous trouvez du contenu susceptible de violer les droits d'auteur, veuillez envoyer un email à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un email pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, le site supprimera immédiatement le contenu suspect.

Vous pourriez aussi aimer