mirror of
https://github.com/teivah/100-go-mistakes.git
synced 2026-06-26 03:16:58 +08:00
Reviews
This commit is contained in:
parent
f3f5d06bcf
commit
ab22488bb0
1 changed files with 45 additions and 37 deletions
|
|
@ -1,18 +1,25 @@
|
|||
package main
|
||||
|
||||
import "sync"
|
||||
import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
func sequentialMergesort(s []int) {
|
||||
if len(s) > 1 {
|
||||
if len(s) <= 1 {
|
||||
return
|
||||
}
|
||||
|
||||
middle := len(s) / 2
|
||||
sequentialMergesort(s[:middle])
|
||||
sequentialMergesort(s[middle:])
|
||||
merge(s, middle)
|
||||
}
|
||||
}
|
||||
|
||||
func parallelMergesortV1(s []int) {
|
||||
if len(s) > 1 {
|
||||
if len(s) <= 1 {
|
||||
return
|
||||
}
|
||||
|
||||
middle := len(s) / 2
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
|
@ -30,13 +37,15 @@ func parallelMergesortV1(s []int) {
|
|||
|
||||
wg.Wait()
|
||||
merge(s, middle)
|
||||
}
|
||||
}
|
||||
|
||||
const max = 2048
|
||||
|
||||
func parallelMergesortV2(s []int) {
|
||||
if len(s) > 1 {
|
||||
if len(s) <= 1 {
|
||||
return
|
||||
}
|
||||
|
||||
if len(s) <= max {
|
||||
sequentialMergesort(s)
|
||||
} else {
|
||||
|
|
@ -58,7 +67,6 @@ func parallelMergesortV2(s []int) {
|
|||
wg.Wait()
|
||||
merge(s, middle)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func merge(s []int, middle int) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue