= len(q.arr) {..."/>

请教 golang 的一个切片的问题

20次阅读

共计 471 个字符,预计需要花费 2 分钟才能阅读完成。

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)
}

请教一下输出的为什么不是 [3 20 30] 呀,感觉使用好像和 python 的不太一样

正文完
 0