Golang 检查给定的slice是否被排序

Golang 检查给定的slice是否被排序

在Go语言中slice比数组更强大、更灵活、更方便,是一种轻量级的数据结构。slice是一个可变长度的序列,它存储相似类型的元素,你不允许在同一个slice中存储不同类型的元素。

在Go语言中,你可以在 SliceIsSorted() 函数的帮助下检查给定的slice是否被排序。如果给定的片断是被排序的,这个函数返回true。如果给定的片断没有被排序,则返回false。如果指定的接口不是一个切片类型,这个函数就会发生恐慌。它被定义在sort包下,因此,你必须在你的程序中导入sort包以访问SliceIsSorted函数。

语法

func SliceIsSorted(a_slice interface{}, less func(p, q int) bool) bool

例子

// Go program to illustrate how to check
// the given slice is sorted or not
package main
  
import (
    "fmt"
    "sort"
)
  
// Main function
func main() {
  
    // Creating and initializing
    // a structure
    Author := []struct {
        a_name    string
        a_article int
        a_id      int
    }{
        {"Mina", 304, 1098},
        {"Cina", 634, 102},
        {"Tina", 104, 105},
        {"Rina", 10, 108},
        {"Sina", 234, 103},
        {"Vina", 237, 106},
        {"Rohit", 56, 107},
        {"Mohit", 300, 104},
        {"Riya", 4, 101},
        {"Sohit", 20, 110},
    }
  
    // Sorting Author by their name
    // Using Slice() function
    sort.Slice(Author, func(p, q int) bool { 
     return Author[p].a_name < Author[q].a_name })
  
    // Checking the slice is sorted
    // according to their names
    // Using SliceIsSorted function
    res1 := sort.SliceIsSorted(Author, func(p, q int) bool { 
               return Author[p].a_name < Author[q].a_name })
      
    if res1 == true {
      
        fmt.Println("Slice is sorted by their names")
          
    } else {
      
        fmt.Println("Slice is not sorted by their names")
    }
  
    // Checking the slice is sorted 
    // according to their total articles
    // Using SliceIsSorted function
    res2 := sort.SliceIsSorted(Author, func(p, q int) bool { 
         return Author[p].a_article < Author[q].a_article })
      
    if res2 == true {
      
        fmt.Println("Slice is sorted by "+
         "their total number of articles")
          
    } else {
      
        fmt.Println("Slice is not sorted by"+
           " their total number of articles")
    }
  
    // Sorting Author by their ids
    // Using Slice() function
    sort.Slice(Author, func(p, q int) bool { 
      return Author[p].a_id < Author[q].a_id })
  
    // Checking the slice is sorted
    // according to their ids
    // Using SliceIsSorted function
    res3 := sort.SliceIsSorted(Author, func(p, q int) bool { 
                   return Author[p].a_id < Author[q].a_id })
      
    if res3 == true {
      
        fmt.Println("Slice is sorted by their ids")
          
    } else {
      
        fmt.Println("Slice is not sorted by their ids")
    }
}

输出

Slice is sorted by their names
Slice is not sorted by their total number of articles
Slice is sorted by their ids

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程