English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この記事では、Golangアルゴリズム問題の配列を指定されたルールに従って並べ替える方法について説明します。皆さんに共有し、以下のように詳細を示します:
二次元配列を与え、この二次元配列を第i列(iは0から始まる)に基づいて並べ替えてください。1始めに並べ替え、第i列が同じであれば、同じ行に対して第i列に基づいて並べ替えます。+1列の要素を並べ替え、
第i+1列の要素も同じであれば、第i+2列、それに続き、最後の列まで並べ替えます。第i列から最後の列までが同じであれば、元の順序で並べ替えます。
サンプル入力:
1,2,3
2,3,4
2,3,1
1,3,1
第2列並べ替え、出力:
1,2,3
2,3,1
1,3,1
2,3,4
コード実装:
package huawei import ( "fmt" "sort" ) func Test09Base() { nums := [][]int{{1, 2, 3}, {2, 3, 4}, {2, 3, 1}, {1, 3, 1}} firstIndex := 2 //第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("警告: Param firstIndexは0とlen(nums)の間でなければなりません"-1)元の配列が返されます。 return nums } //並列 mIntArray := &IntArray{nums, firstIndex} return mIntArray.mArr type IntArray struct { } [][]int mArr firstIndex int } //IntArrayが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 }
本記事がGo言語のプログラム設計に役立つことを願っています。
声明:本文の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードした内容であり、本サイトは所有権を持ちません。人工的な編集は行われていません。著作権侵害が疑われる内容があれば、メールを送信してください:notice#oldtoolbag.com(メールの際は、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは侵害が疑われる内容をすぐに削除します。)