Если я правильно понимаю, вы хотите сделать свою собственную реализацию, но не уверены, почему не хотите использовать пакет sort
. Вы можете выполнить пользовательскую сортировку, переопределив go#interface
.
Например,
Вы можете написать пользовательскую сортировку в go и вызвать ее с помощью пакета сортировки. в основном вы можете переопределить функцию сортировки для интерфейса и можете изменить поведение в соответствии с вашими потребностями. вы можете создать структуру, которая будет принимать ваши данные, как показано ниже, и переопределять функции Len (), Swap (), Less ()
type Sortslice struct {
Sli []int
}
func (s Sortslice) Len() int {
return len(s.Sli)
}
func (s Sortslice) Swap(i, j int) {
s.Sli[i], s.Sli[j] = s.Sli[j], s.Sli[i]
}
func (s Sortslice) Less(i, j int) bool {
if s.Sli[i] > s.Sli[j] {
return true
} else {
return false
}
}
После создания структуры вы можете передавать в нее свои данные и вызовите метод сортировки через интерфейс [], используя функцию sort.sort (). при этом для сортировки среза будет использоваться ваша логика c.
var data = []int{5,6,8,1,9,10}
sortedSlice := Sortslice{data}
sort.Sort(sortedSlice);
Лучше использовать sort.Sort
, так как это требует того, что делать (использовать сортировку слиянием, быструю сортировку).
Но если вы хотите сделать все самостоятельно, следуйте исходному коду sort.sort () и аналогичным образом напишите свои собственные вещи
source: https://yourbasic.org/golang/how-to-sort-in-go/