最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang算法問(wèn)題之?dāng)?shù)組按指定規(guī)則排序的方法分析

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

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

給出一個(gè)二維數(shù)組,請(qǐng)將這個(gè)二維數(shù)組按第i列(i從1開始)排序,如果第i列相同,則對(duì)相同的行按第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

代碼實(shí)現(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ī)則對(duì)nums進(jìn)行排序(注:此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實(shí)現(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
}

希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 深度解密 Go 語(yǔ)言中的 sync.map

    深度解密 Go 語(yǔ)言中的 sync.map

    這篇文章主要介紹了深度解密 Go 語(yǔ)言中的 sync.map,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 在Golang中執(zhí)行Shell命令的教程詳解

    在Golang中執(zhí)行Shell命令的教程詳解

    在本教程中,我們將學(xué)習(xí)如何在 Golang 中執(zhí)行shell命令(如 ls、mkdir 或 grep ),我們還將學(xué)習(xí)如何通過(guò) stdin 和 stdout 傳遞 I/O 到正在運(yùn)行的命令,以及管理長(zhǎng)時(shí)間運(yùn)行的命令,感興趣的同學(xué)可以借鑒一下
    2023-05-05
  • 關(guān)于Go 是傳值還是傳引用?

    關(guān)于Go 是傳值還是傳引用?

    這篇文章主要討論Go語(yǔ)言 是傳值還是傳引用?文章先從Go 官方的定義展開,隨后是傳值和傳引用得介紹到map 和 slice得區(qū)別,需要的小伙伴可以參考一下文章得具體內(nèi)容
    2021-10-10
  • Go單元測(cè)試?yán)鱰estify使用示例詳解

    Go單元測(cè)試?yán)鱰estify使用示例詳解

    這篇文章主要為大家介紹了Go單元測(cè)試?yán)鱰estify使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • golang逗號(hào)ok模式整合demo

    golang逗號(hào)ok模式整合demo

    這篇文章主要為大家介紹了golang逗號(hào)ok模式整合demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Golang?WorkerPool線程池并發(fā)模式示例詳解

    Golang?WorkerPool線程池并發(fā)模式示例詳解

    這篇文章主要為大家介紹了Golang?WorkerPool線程池并發(fā)模式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 一文帶你掌握GoLang中的指針

    一文帶你掌握GoLang中的指針

    針是?Go?編程語(yǔ)言的重要組成部分,它們提供了一種直接引用和操作內(nèi)存中數(shù)據(jù)的方法,在這篇文章中,我們將探討一些技巧和技巧,以掌握?GoLang?中的指針并編寫高效的代碼,需要的可以參考一下
    2023-05-05
  • GO中sync包自由控制并發(fā)示例詳解

    GO中sync包自由控制并發(fā)示例詳解

    這篇文章主要為大家介紹了GO中sync包自由控制并發(fā)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 使用?gomonkey?Mock?函數(shù)及方法示例詳解

    使用?gomonkey?Mock?函數(shù)及方法示例詳解

    在 Golang 語(yǔ)言中,寫單元測(cè)試的時(shí)候,不可避免的會(huì)涉及到對(duì)其他函數(shù)及方法的 Mock,即在假設(shè)其他函數(shù)及方法響應(yīng)預(yù)期結(jié)果的同時(shí),校驗(yàn)被測(cè)函數(shù)的響應(yīng)是否符合預(yù)期,這篇文章主要介紹了使用?gomonkey?Mock?函數(shù)及方法,需要的朋友可以參考下
    2022-06-06
  • go語(yǔ)言接口用法實(shí)例分析

    go語(yǔ)言接口用法實(shí)例分析

    這篇文章主要介紹了go語(yǔ)言接口用法,實(shí)例分析了Go語(yǔ)言接口的定義及使用技巧,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

文登市| 巴彦淖尔市| 汝南县| 会宁县| 新昌县| 庆云县| 兴安县| 乌拉特前旗| 南漳县| 盘锦市| 瑞丽市| 平塘县| 徐州市| 商水县| 台南县| 满洲里市| 铜梁县| 本溪市| 九寨沟县| 衡南县| 财经| 大同市| 晋州市| 肇州县| 贵阳市| 汉川市| 铜川市| 鹰潭市| 大渡口区| 灵璧县| 龙井市| 陵水| 开化县| 石渠县| 资中县| 永顺县| 河南省| 紫云| 五莲县| 清流县| 卓尼县|