3. 数组切片的搜索
-
线性搜索
- 使用泛型实现线性搜索:
func LinearSearch[T comparable](arr []T, target T) int { for i, v := range arr { if v == target { return i } } return -1 }
- 使用泛型实现线性搜索:
-
并发搜索
- 使用泛型实现并发搜索:
import ( "sync" ) func ConcurrentLinearSearch[T comparable](arr []T, target T) int { var wg sync.WaitGroup result := make(chan int, len(arr)) for i, v := range arr { wg.Add(1) go func(i int, v T) { defer wg.Done() if v == target { result <- i } }(i, v) } wg.Wait() close(result) for res := range result { return res } return -1 }
- 使用泛型实现并发搜索:
-
二分搜索
- 使用泛型实现二分搜索:
func BinarySearch[T constraints.Ordered](arr []T, target T) int { left, right := 0, len(arr)-1 for left <= right { mid := (left + right) / 2 if arr[mid] == target { return mid } if arr[mid] < target { left = mid + 1 } else { right = mid - 1 } } return -1 }
- 使用泛型实现二分搜索: