This commit is contained in:
teivah 2022-02-05 14:07:04 +01:00
parent f3f5d06bcf
commit ab22488bb0
No known key found for this signature in database
GPG key ID: 07E4A13FB8F8DF63

View file

@ -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
@ -31,12 +38,14 @@ 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 {
@ -59,7 +68,6 @@ func parallelMergesortV2(s []int) {
merge(s, middle)
}
}
}
func merge(s []int, middle int) {
helper := make([]int, len(s))