Тип sort.Float64Slice
Тип sort.Float64Slice представляет собой слайс чисел с плавающей точкой (float64),
который реализует интерфейс sort.Interface. Это позволяет использовать его
с функцией sort.Sort для сортировки элементов в порядке возрастания.
Основное преимущество данного типа в том, что он предоставляет готовую
реализацию методов Len, Less и Swap для работы с числами с плавающей точкой.
Синтаксис
sort.Float64Slice(floats)
Для создания значения типа sort.Float64Slice необходимо
преобразовать слайс float64. Затем полученное значение
можно передать в функцию sort.Sort для сортировки.
Пример
Давайте отсортируем слайс чисел с плавающей точкой в порядке возрастания:
package main
import (
"fmt"
"sort"
)
func main() {
floats := []float64{3.14, 1.5, 2.71, 0.5, 10.1}
sort.Sort(sort.Float64Slice(floats))
fmt.Println(floats)
}
Результат выполнения кода:
[0.5 1.5 2.71 3.14 10.1]
Пример
Тип sort.Float64Slice также предоставляет метод Sort,
который сортирует слайс без необходимости использовать
sort.Sort. Давайте воспользуемся этим методом:
package main
import (
"fmt"
"sort"
)
func main() {
floats := []float64{2.5, 0.3, 1.7, 3.9, 0.1}
sort.Float64Slice(floats).Sort()
fmt.Println(floats)
}
Результат выполнения кода:
[0.1 0.3 1.7 2.5 3.9]
Пример
Метод Search типа sort.Float64Slice позволяет
выполнить бинарный поиск элемента в отсортированном слайсе.
Он возвращает индекс позиции, куда следует вставить элемент,
если он не найден. Поиск работает только на отсортированном слайсе:
package main
import (
"fmt"
"sort"
)
func main() {
floats := []float64{1.1, 2.2, 3.3, 4.4, 5.5}
slice := sort.Float64Slice(floats)
index := slice.Search(3.3)
fmt.Println(index)
}
Результат выполнения кода:
2
Пример
Если элемент не найден, метод Search возвращает индекс,
по которому элемент должен быть вставлен для сохранения
сортировки. Давайте проверим это на практике:
package main
import (
"fmt"
"sort"
)
func main() {
floats := []float64{1.1, 2.2, 4.4, 5.5}
slice := sort.Float64Slice(floats)
index := slice.Search(3.3)
fmt.Println(index)
}
Результат выполнения кода:
2
Смотрите также
-
тип
sort.IntSlice,
который реализует интерфейс sort.Interface для слайса int -
тип
sort.StringSlice,
который реализует интерфейс sort.Interface для слайса string -
функцию
sort.Float64s,
которая сортирует слайс float64 без преобразования типа -
функцию
sort.Sort,
которая сортирует любой слайс, реализующий sort.Interface