package main
import "fmt"
type pq struct {
arr []int
}
func (q *pq) put(num int) {
// 从小到大的顺序插入进去
index := b_s(q.arr, num)
if index >= len(q.arr) {
// 直接插到最后一个数位
q.arr = append(q.arr, num)
} else {
tmp := append(q.arr[:index], num)
tmp = append(tmp, q.arr[index:]...)
q.arr = tmp
}
}
func (q *pq) get() int {
if len(q.arr) > 0 {
num := q.arr[0]
q.arr = q.arr[1:]
return num
}
panic("arr is empty!!!")
}
func (q *pq) getSize() int {
return len(q.arr)
}
func b_s(arr []int, target_num int) int {
if len(arr) == 0 {
return 0
} else {
left, right := 0, len(arr)-1
for {
if right-left <= 1 {
if target_num <= arr[left] {
return left
} else if target_num <= arr[right] {
return right
} else {
return right + 1
}
} else {
mid := (left + right) / 2
if arr[mid] == target_num {
return mid
} else if arr[mid] < target_num {
left = mid
} else {
right = mid
}
}
}
}
}
func main() {
s := &pq{arr: make([]int, 0)}
s.put(20)
s.put(3)
s.put(30)
fmt.Println(s.arr)
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.