Union-Find(Java实现)

quick-find、quick-union、加权quick-union(附带路径压缩优化) 本算法主要解决动态连通性一类问题,这里尽量用精炼 [Read More]

Union-Find(golang实现)

quick-find、quick-union、加权quick-union(附带路径压缩优化) 本算法主要解决动态连通性一类问题,这里尽量用精炼 [Read More]

golang动态规划求解最大连续子数组和

// 求最大连续子数组和
func MaxSubArray(arr []int) int {
	currSum := 0
	maxSum := arr[0]

	for _, v := range arr {
		if currSum > 0 {
			currSum += v
		} else {
			currSum = v
		}
		if maxSum < currSum {
			maxSum = currSum
		}
	}
	return maxSum
}

golang实现二叉查找树

为简单起见,键值均为整型。 定义接口(tree.go): type Tree interface { Put(k, v int) //新增或修改 Get(k int) int //查询 Delete(k int) //删除 Size() int //树的大小 Min() int //最小键 DeleteMin() [Read More]

三向切分快速排序(Java实现)

封装成类: package com.roc.algorithms.sort; /** * 三向切分快速排序 * 适合有较多重复元素的排序算法 * * @author imroc */ public class ThreeWayQuickSort { public static void sort(int[] a) { sort(a, 0, a.length - 1); } //在lt之前的(lo~lt-1) [Read More]

三向切分快速排序(golang实现)

封装成函数: //三向切分快速排序 func ThreeWayQuickSort(s []int) { sort3way(s, 0, len(s)-1) } //在lt之前的(lo~lt-1)都小于中间值 //在gt之前的(gt+1~hi)都大于中间值 [Read More]