English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este exemplo mostra como ordenar um array conforme uma regra específica em Golang. Compartilho com todos para referência, conforme a seguir:
forneça uma matriz bidimensional, ordene esta matriz bidimensional pela coluna i (i começa de1iniciar) ordenação, se a coluna i for igual, ordena as linhas iguais pela coluna i+1os elementos da coluna são ordenados,
se o elemento da coluna i+1os elementos da coluna também forem iguais, continua a comparar a coluna i+2coluna, e assim por diante, até a última coluna. Se as colunas de i até a última forem iguais, então são ordenadas pela ordem original.
entrada de exemplo:
1,2,3
2,3,4
2,3,1
1,3,1
ordenar pela2ordenar por coluna, saída:
1,2,3
2,3,1
1,3,1
2,3,4
implementação do código:
package huawei import ( "fmt" "ordenar" ) func Test09Base() { nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}} firstIndex := 2 //ordenar pela segunda coluna result := arraySort(nums, firstIndex-1) fmt.Println(result) } //ordenar nums conforme a regra especificada (notação: este firstIndex começa em 0) func arraySort(nums [][]int, firstIndex int) [][]int { //verificar if len(nums) <= 1 { return nums } if firstIndex < 0 || firstIndex > len(nums[0])-1 { fmt.Println("Aviso: O parâmetro firstIndex deve estar entre 0 e len(nums)-1A array original é retornada. return nums } //ordenar mIntArray := &IntArray{nums, firstIndex} sort.Sort(mIntArray) return mIntArray.mArr } type IntArray struct { mArr [][]int firstIndex int } //IntArray implementa a 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 }
Espero que o que é mencionado neste artigo ajude a todos a programar em Go.
Declaração: o conteúdo deste artigo é extraído da internet, pertence ao respectivo proprietário, foi submetido e carregado voluntariamente pelos usuários da internet, este site não possui direitos de propriedade, não foi editado manualmente e não assume responsabilidade legal. Se você encontrar conteúdo suspeito de violação de direitos autorais, bem-vindo a enviar e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @ para denunciar e forneça provas. Se confirmado, o site deletará imediatamente o conteúdo suspeito de violação de direitos autorais.)