diff --git a/algorithm/sort.go b/algorithm/sort.go index 32da184..ad2b6ad 100644 --- a/algorithm/sort.go +++ b/algorithm/sort.go @@ -9,12 +9,17 @@ import "github.com/duke-git/lancet/v2/constraints" // Play: https://go.dev/play/p/GNdv7Jg2Taj func BubbleSort[T any](slice []T, comparator constraints.Comparator) { for i := 0; i < len(slice); i++ { + breakTag := false for j := 0; j < len(slice)-1-i; j++ { isCurrGreatThanNext := comparator.Compare(slice[j], slice[j+1]) == 1 if isCurrGreatThanNext { swap(slice, j, j+1) + breakTag = true } } + if !breakTag { + break + } } }