在Go(Golang)中对切片的一部分进行排序的方法

687 阅读1分钟

概述

golang的sort.Slice包可以用来对一个完整的切片或部分切片进行排序完整的切片以asc顺序进行排序。

package main

import (
	"fmt"
	"sort"
)

func main() {

	nums := []int{3, 4, 2, 1}
	sort.Slice(nums, func(i, j int) bool {
		return nums[i] < nums[j]
	})
	fmt.Println(nums)
}

输出

[1,2,3,4]

全切片按降序排序

package main
import (
    "fmt"
    "sort"
)
func main() {
    nums := []int{3, 4, 2, 1}
    sort.Slice(nums, func(i, j int) bool {
        return nums[i] > nums[j]
    })
    fmt.Println(nums)
}

输出

[4 3 2 1]

部分片断排序

package main

import (
	"fmt"
	"sort"
)

func main() {

	nums := []int{3, 4, 2, 1}
	start := 2
	end := 4
	sort.Slice(nums[start:end], func(i, j int) bool {
		return nums[start+i] < nums[start+j]
	})
	fmt.Println(nums)
}

输出

[3 4 1 2]

请注意,它已经将最后两个元素按asc顺序排序。