proposal(sort):对sort进行拓展
nieaowei opened this issue · 0 comments
nieaowei commented
使用函数思维对sort进行拓展,主要目的:
- 减少大量的函数定义(使用官方sort排序时,需要实现sort包内的Interface接口)
- 减少type定义
- 有利于代码阅读(代码更加集中,逻辑点更清晰)
- 对临时排序友好
package main
func Sort(length uint64, less func(i, j uint64) bool, swap func(i, j uint64)) {
for m := uint64(0); m < length; m++ {
for i := uint64(0); i < length; i++ {
if i == length-1 {
break
}
if less(i, i+1) {
swap(i, i+1)
}
}
length--
}
}
func SortInts(s []int) {
Sort(uint64(len(s)),
func(i, j uint64) bool {
return s[i] < s[j]
},
func(i, j uint64) {
s[i], s[j] = s[j], s[i]
},
)
}
func main() {
data := []int{2, 1, 4,3}
Sort(uint64(len(data)),
func(i, j uint64) bool {
return data[i] < data[j]
},
func(i, j uint64) {
data[i], data[j] = data[j], data[i]
})
SortInts(data)
}