English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golangのアルゴリズム問題での配列を指定されたルールでソートする方法の分析

この記事では、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(メールの際は、#を@に置き換えてください。報告を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは侵害が疑われる内容をすぐに削除します。)

基本チュートリアル
おすすめ