English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieser Artikel erläutert das Golang-Algorithmenproblem, das das Array nach den angegebenen Regeln sortiert. Hier ist eine gemeinsame Referenz, wie folgt:
Geben Sie eine zweidimensionale Array, sortieren Sie diese zweidimensionale Array nach der Spalte i (i beginnt mit1Beginn) Sortierung, wenn die Spalte i gleich ist, wird die gleiche Zeile nach der Spalte i sortiert.+1Spalten der Elemente sortiert werden sollen,
Wenn die Elemente der+1Spalte gleich sind, wird die gleiche Zeile nach der Spalte i sortiert.+2Spalte, und so weiter, bis zur letzten Spalte. Wenn die Elemente der Spalte i bis zur letzten Spalte gleich sind, wird nach der ursprünglichen Reihenfolge sortiert. Wenn die Elemente der Spalte i ebenfalls gleich sind, wird fortgesetzt, die Spalte i zu vergleichen.
Beispiel-Eingabe:
1,2,3
2,3,4
2,3,1
1,3,1
Sortierung nach der2Spaltensortierung, Ausgabe:
1,2,3
2,3,1
1,3,1
2,3,4
Codeimplementierung:
package huawei import ( "fmt" "sort" ) func Test09Base() { nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}} firstIndex := 2 //Sortierung nach der zweiten Spalte result := arraySort(nums, firstIndex-1) fmt.Println(result) } //Sortieren Sie nums nach den angegebenen Regeln (Hinweis: Dieser firstIndex beginnt bei 0) func arraySort(nums [][]int, firstIndex int) [][]int { //Überprüfung if len(nums) <= 1 { return nums } if firstIndex < 0 || firstIndex > len(nums[0])-1 { fmt.Println("Warning: Der Parameter firstIndex sollte zwischen 0 und len(nums)")-1. Das ursprüngliche Array wird zurückgegeben.") return nums } //Sortierung mIntArray := &IntArray{nums, firstIndex} sort.Sort(mIntArray)} return mIntArray.mArr } type IntArray struct { mArr [][]int firstIndex int } //IntArray implementiert das sort.Interface-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 }
Es wird gehofft, dass der vorliegende Artikel allen bei der Programmierung in der Programmiersprache Go weiterhelfen kann.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheber. Der Inhalt wurde von Internetnutzern freiwillig und eigenständig hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sollten Sie urheberrechtlich beanstandete Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (bei der E-Mail bitte # durch @ ersetzen) melden und relevante Beweise bereitstellen. Bei nachgewiesener Urheberrechtsverletzung wird diese Website die beanstandeten Inhalte sofort löschen.