English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Questo esempio spiega il metodo di ordinamento dell'array secondo una regola specifica in Golang. Condivido questo con tutti voi per riferimento, come segue:
Date un array bidimensionale, ordinare questo array bidimensionale per la colonna i (i inizia da 1), se la colonna i è identica, ordinare le righe identiche per l'elemento della colonna i+1,
Se gli elementi della colonna i+1 sono anche identici, continua a confrontare la colonna i+2, e così via, fino all'ultima colonna. Se le colonne da i all'ultima colonna sono identiche, vengono riordinati secondo l'ordine originale.
Input di esempio:
1,2,3
2,3,4
2,3,1
1,3,1
Ordina per la seconda colonna, output:
1,2,3
2,3,1
1,3,1
2,3,4
Implementazione del codice:
package huawei import ( "fmt" "sort" ) func Test09Base() { nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}} firstIndex := 2 //按第二列排序 result := arraySort(nums, firstIndex-1) fmt.Println(result) } //按指定规则对nums进行排序(注:此firstIndex从0开始) func arraySort(nums [][]int, firstIndex int) [][]int { //检查 if len(nums) <= 1 { return nums } if firstIndex < 0 || firstIndex > len(nums[0])-1 { fmt.Println("Warning: Param firstIndex should between 0 and len(nums)-1. The original array is returned.") return nums } //排序 mIntArray := &IntArray{nums, firstIndex} sort.Sort(mIntArray) return mIntArray.mArr } type IntArray struct { mArr[][]int firstIndex int } // Implementazione di IntArray dell'interfaccia 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 }
Spero che questo articolo possa essere utile a tutti per la progettazione di programmi Go.
Dichiarazione: il contenuto di questo articolo è stato preso da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato contribuito autonomamente dagli utenti di Internet e caricato autonomamente, il sito web non possiede il diritto di proprietà, non è stato editato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito Web rimuoverà immediatamente il contenuto sospetto di violazione del copyright.