go語言筆記——切片函數常見操作,增刪改查和搜尋、排序

來源:互聯網
上載者:User

標籤:hub   索引   nbsp   序列   com   因此   str   它的   slice   

7.6.6 搜尋及排序切片和數組

標準庫提供了 sort 包來實現常見的搜尋和排序操作。您可以使用 sort 包中的函數 func Ints(a []int) 來實現對 int 類型的切片排序。例如 sort.Ints(arri),其中變數 arri 就是需要被升序排序的數組或切片。為了檢查某個數組是否已經被排序,可以通過函數 IntsAreSorted(a []int) bool 來檢查,如果返回 true 則表示已經被排序。

類似的,可以使用函數 func Float64s(a []float64) 來排序 float64 的元素,或使用函數 func Strings(a []string) 排序字串元素。

想要在數組或切片中搜尋一個元素,該數組或切片必須先被排序(因為標準庫的搜尋演算法使用的是二分法)。然後,您就可以使用函數 func SearchInts(a []int, n int) int 進行搜尋,並返回對應結果的索引值。

當然,還可以搜尋 float64 和字串:

func SearchFloat64s(a []float64, x float64) intfunc SearchStrings(a []string, x string) int

您可以通過查看 官方文檔 來擷取更詳細的資訊。

這就是如何使用 sort 包的方法,我們會在第 11.6 節對它的細節進行深入,並實現一個屬於我們自己的版本。

7.6.7切片函數常見操作

我們在第 7.5 節提到的 append 非常有用,它能夠用於各種方面的操作:

  1. 將切片 b 的元素追加到切片 a 之後:a = append(a, b...)

  2. 複製切片 a 的元素到新的切片 b 上:

    b = make([]T, len(a))copy(b, a)
  3. 刪除位元於索引 i 的元素:a = append(a[:i], a[i+1:]...)

  4. 切除切片 a 中從索引 i 至 j 位置的元素:a = append(a[:i], a[j:]...)

  5. 為切片 a 擴充 j 個元素長度:a = append(a, make([]T, j)...)

  6. 在索引 i 的位置插入元素 x:a = append(a[:i], append([]T{x}, a[i:]...)...)

  7. 在索引 i 的位置插入長度為 j 的新切片:a = append(a[:i], append(make([]T, j), a[i:]...)...)

  8. 在索引 i 的位置插入切片 b 的所有元素:a = append(a[:i], append(b, a[i:]...)...)

  9. 取出位於切片 a 最末尾的元素 x:x, a = a[len(a)-1], a[:len(a)-1]

  10. 將元素 x 追加到切片 a:a = append(a, x)

因此,您可以使用切片和 append 操作來表示任意可變長度的序列。

從數學的角度來看,切片相當於向量,如果需要的話可以定義一個向量作為切片的別名來進行操作。

如果您需要更加完整的方案,可以學習一下 Eleanor McHugh 編寫的幾個包:slices、chain 和 lists。

 

摘自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/07.6.md

go語言筆記——切片函數常見操作,增刪改查和搜尋、排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.