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"
    "정렬"
)
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("경고: Param firstIndex는 0과 len(nums) 사이여야 합니다"-1)
원본 배열을 반환합니다.
        return nums
    }
    //정렬
    mIntArray := &IntArray{nums, firstIndex}
    sort.Sort(mIntArray)
    return mIntArray.mArr
}
type IntArray struct {
    mArr[][]int
    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#w로 보내 주세요.3codebox.com에 이메일을 보내시면 (#을 @으로 변경해 주세요) 신고를 하고 관련 증거를 제공하시면, 사이트가 즉시 저작권 침해 내용을 삭제합니다.

좋아하는 것