欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang算法問題之數(shù)組按指定規(guī)則排序的方法分析

 更新時間:2017年02月17日 14:32:41   作者:books1958  
這篇文章主要介紹了Golang算法問題之數(shù)組按指定規(guī)則排序的方法,結(jié)合實例形式分析了Go語言數(shù)組排序相關(guān)算法原理與操作技巧,需要的朋友可以參考下

本文實例講述了Golang算法問題之數(shù)組按指定規(guī)則排序的方法。分享給大家供大家參考,具體如下:

給出一個二維數(shù)組,請將這個二維數(shù)組按第i列(i從1開始)排序,如果第i列相同,則對相同的行按第i+1列的元素排序,

如果第i+1列的元素也相同,則繼續(xù)比較第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

代碼實現(xiàn):

復(fù)制代碼 代碼如下:
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)
}
//按指定規(guī)則對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
}
//IntArray實現(xiàn)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語言程序設(shè)計有所幫助。

相關(guān)文章

  • Golang實現(xiàn)組合模式和裝飾模式實例詳解

    Golang實現(xiàn)組合模式和裝飾模式實例詳解

    這篇文章主要介紹了Golang實現(xiàn)組合模式和裝飾模式,本文介紹組合模式和裝飾模式,golang實現(xiàn)兩種模式有共同之處,但在具體應(yīng)用場景有差異。通過對比兩個模式,可以加深理解,需要的朋友可以參考下
    2022-11-11
  • Go標準庫http與fasthttp服務(wù)端性能對比場景分析

    Go標準庫http與fasthttp服務(wù)端性能對比場景分析

    這篇文章主要介紹了Go標準庫http與fasthttp服務(wù)端性能比較,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Go語言Goroutines?泄漏場景與防治解決分析

    Go語言Goroutines?泄漏場景與防治解決分析

    這篇文章主要為大家介紹了Go語言Goroutines?泄漏場景與防治解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Go語言使用Request,Response處理web頁面請求

    Go語言使用Request,Response處理web頁面請求

    這篇文章主要介紹了Go語言使用Request,Response處理web頁面請求,需要的朋友可以參考下
    2022-04-04
  • golang 實現(xiàn)struct、json、map互相轉(zhuǎn)化

    golang 實現(xiàn)struct、json、map互相轉(zhuǎn)化

    這篇文章主要介紹了golang 實現(xiàn)struct、json、map互相轉(zhuǎn)化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解golang 模板(template)的常用基本語法

    詳解golang 模板(template)的常用基本語法

    這篇文章主要介紹了詳解golang 模板(template)的常用基本語法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-08-08
  • golang 定時任務(wù)方面time.Sleep和time.Tick的優(yōu)劣對比分析

    golang 定時任務(wù)方面time.Sleep和time.Tick的優(yōu)劣對比分析

    這篇文章主要介紹了golang 定時任務(wù)方面time.Sleep和time.Tick的優(yōu)劣對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 深入理解Go語言的容器包

    深入理解Go語言的容器包

    Go語言的container標準包包含了堆(heap)、鏈表(list)和環(huán)(ring)三種數(shù)據(jù)結(jié)構(gòu),本文就來詳細的介紹一下這三種的使用,感興趣的可以了解一下
    2024-10-10
  • Go語言切片(Slice)深度剖析與應(yīng)用實戰(zhàn)

    Go語言切片(Slice)深度剖析與應(yīng)用實戰(zhàn)

    在Go語言中,切片(Slice)是一種非常強大且靈活的數(shù)據(jù)結(jié)構(gòu),它基于數(shù)組但又提供了動態(tài)調(diào)整大小的能力,本文將結(jié)合實際案例,詳細介紹Go語言中切片的聲明、初始化、操作、擴容等用法,需要的朋友可以參考下
    2024-09-09
  • GoLang中生成UUID唯一標識的實現(xiàn)方法

    GoLang中生成UUID唯一標識的實現(xiàn)方法

    UUID是讓分散式系統(tǒng)中的所有元素,都能有唯一的辨識信息,本文主要介紹了GoLang中生成UUID唯一標識的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08

最新評論