English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Este ejemplo ilustra el método de ordenamiento de array según reglas específicas en Golang. Compartimos con todos para referencia, como se muestra a continuación:
Proporcione un array bidimensional, ordene este array bidimensional según la columna i (i comienza1comienzo) ordenar, si la columna i es igual, se ordenan las filas iguales según la columna i+1elementos de la columna se ordenan,
Si el i+1elementos de la columna también son iguales, se sigue comparando el i-ésimo+2columnas, y así sucesivamente, hasta la última columna. Si las columnas del i-ésimo al último son iguales, se ordena según el orden original.
Ejemplo de entrada:
1,2,3
2,3,4
2,3,1
1,3,1
ordenar por la2ordenar columnas, salida:
1,2,3
2,3,1
1,3,1
2,3,4
Implementación del 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 por la segunda columna result := arraySort(nums, firstIndex-1) fmt.Println(result) } //Ordenar nums según las reglas especificadas (nota: este firstIndex comienza en 0) func arraySort(nums [][]int, firstIndex int) [][]int { //revisar if len(nums) <= 1 { return nums } if firstIndex < 0 || firstIndex > len(nums[0])-1 { fmt.Println("Advertencia: El parámetro firstIndex debe estar entre 0 y len(nums)-1. Se devuelve el array original.") return nums } //ordenar mIntArray := &IntArray{nums, firstIndex} sort.Sort(mIntArray) return mIntArray.mArr } type IntArray struct { mArr [][]int firstIndex int } //IntArray implementa la interfaz 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 lo descrito en este artículo sea útil para el diseño de programas en Go.
Declaración: El contenido de este artículo se obtiene de la red, pertenece al propietario original, se carga y contribuye de manera autónoma por los usuarios de Internet. Este sitio no posee los derechos de propiedad, no realiza procesamiento editorial humano y no asume responsabilidades legales relacionadas. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#w3Deje un correo electrónico en codebox.com (reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.