golang-hash

package main

import (
	"fmt"
	"math"
)

//1 lv func
func HashFuncTimes(num int, tableSize int) int {
	B := float64(num)
	A := 0.618
	na := float64(tableSize) * math.Mod(B*A, 1)
	fmt.Println(na)
	return int(na)
}

//2 lv func
func HashFunc(num int, ts int) int {
	return num % ts
}

type HashList struct {
	data int
	p    []HashList
}

func main() {
	var arr = []int{6, 5, 3, 1, 8, 7, 2, 4, 9}
	fmt.Println(arr)

	hl := make([]HashList, len(arr), len(arr))

	//demo
	var tmp1 = 37
	fmt.Println(HashFuncTimes(tmp1, len(arr)))
	fmt.Println(HashFunc(tmp1, len(arr)))

	ts := len(arr)
	//simple
	for _, num := range arr {
		k := HashFuncTimes(num, ts)
		if hl[k].data != 0 {
			hl[k].p = make([]HashList, ts, ts)
			k2 := HashFunc(num, ts)
			hl[k].p[k2].data = num
		} else {
			hl[k].data = num
		}
	}
	fmt.Println(hl)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值