README
ΒΆ
νκΈ λ¬Έμ | English Document
GoSortingAlgorithms
Go μΈμ΄λ‘ μμ±λ λ€μν μ λ ¬ μκ³ λ¦¬μ¦λ€μ΄ μμ΅λλ€ :octocat:
π° μ€μΉ λ°©λ²
Go μΈμ΄κ° μ€μΉ λμ΄ μλ€λ©΄, go get λͺ λ Ήμ΄λ₯Ό μ€ννμ¬ GoSoringAlgorithms ν¨ν€μ§λ₯Ό λ°μμ΅λλ€.
$ go get github.com/kdgyun/GoSortingAlgorithms
π μ¬μ© μ€λͺ μ
κ°λ¨ν©λλ€!
package main
import (
"github.com/kdgyun/GoSortingAlgorithms/sorts"
crand "crypto/rand"
"fmt"
"math"
"math/big"
"math/rand"
"sort"
)
// λλ€ μ μ μ¬λΌμ΄μ€ μμ±κΈ°
func SliceBuilder(len int) []int {
seed, _ := crand.Int(crand.Reader, big.NewInt(math.MaxInt64))
rand.Seed(seed.Int64())
var slice []int
for i := 0; i < len; i++ {
slice = append(slice, rand.Int())
}
return slice
}
func main() {
slice := SliceBuilder(1000000)
sorts.QuickSort(slice) // sorts.____(slice []int)
isSorted := sort.SliceIsSorted(slice, func(i, j int) bool {
return slice[i] < slice[j]
})
fmt.Print(isSorted)
}
π§ͺ κ°λ¨ν ν μ€νΈ λ°©λ²
symplytest λ₯Ό ν΅ν΄ μ½κ² ν μ€νΈ ν μ μμ΅λλ€.
package main
import (
"github.com/kdgyun/GoSortingAlgorithms/simplytest"
)
func main() {
simplytest.RunTest()
}
μΆλ ₯ μμ
+==================================================================================+
| Random Test |
+==================================================================================+
...
[array length : 100000]
make arrays...
running bubble sort...
running cocktail sort...
...
running intro sort...
running parallel intro sort...
running cycle sort...
+-------------------------------------------------------------------------------------------------+
| name | ns | ms | verify | (err mag)
|-------------------------------------------------------------------------------------------------|
| bubble sort | 13016202738 ns | 13016 ms | true |
|-------------------------------------------------------------------------------------------------|
| cocktail sort | 8922656474 ns | 8922 ms | true |
|-------------------------------------------------------------------------------------------------|
| tim sort | 11419013 ns | 11 ms | true |
|-------------------------------------------------------------------------------------------------|
| bitonic sort | 32333072 ns | 32 ms | true |
|-------------------------------------------------------------------------------------------------|
...
|-------------------------------------------------------------------------------------------------|
| intro sort | 6665792 ns | 6 ms | true |
|-------------------------------------------------------------------------------------------------|
| parallel intro sort | 2537508 ns | 2 ms | true |
|-------------------------------------------------------------------------------------------------|
| cycle sort | 20209957747 ns | 20209 ms | true |
+-------------------------------------------------------------------------------------------------+
Option
option.go
λ₯Ό ν΅ν΄ μ¬μ©μκ° μ½κ² ν
μ€νΈ νμμ μ‘°μ ν μ μμΌλ©°, 3κ°μ§ μ£Όμ μ΅μ
μ μ 곡ν©λλ€.
-
μ λ ¬ μκ³ λ¦¬μ¦ μ ν νΉμ μ λ ¬ μκ³ λ¦¬μ¦λ§ ν μ€νΈ νΉμ μ μΈνκ³ μ νλ€λ©΄ ν μ€νΈνκ³ μ νλ μ λ ¬ μκ³ λ¦¬μ¦ μ΄λ¦μ μ°Ύμ λ³μλ₯Ό true λλ falseλ‘ λ³κ²½ν©λλ€. (True : ν μ€νΈ νμ©, false : ν μ€νΈ λΉνμ©)
ex) SHELL_SORT Activate = true
-
ν μ€νΈ ν μ¬λΌμ΄μ€μ κΈΈμ΄ λ³κ²½. ν μ€νΈν μ¬λΌμ΄μ€μ κΈΈμ΄λ₯Ό λ³κ²½νλ €λ©΄ 'lengths' λ³μμ μ¬λΌμ΄μ€λ₯Ό μνλ κ°μΌλ‘ μ€μ ν μ μμ΅λλ€. μλ μμλ κΈΈμ΄ 35, 50,000, 100,000 μ¬λΌμ΄μ€μ λν΄ κ°κ° ν μ€νΈ νκ² λ©λλ€.
ex) var lengths = [...]int{35, 50000, 100000}
-
μ¬λΌμ΄μ€ μ ν λ³κ²½.
κΈ°λ³Έμ μΌλ‘ μ€λ¦μ°¨μ, λ΄λ¦Όμ°¨μ λ° λλ€ λ°μ΄ν°λ‘ ꡬμ±λ κ°κ°μ λͺ¨λ μ¬λΌμ΄μ€κ° ν μ€νΈλ©λλ€. κ·Έλ¬λ νΉμ λ°μ΄ν° μ νμ λΉνμ±ννλ €λ©΄ λ³μλ₯Ό falseλ‘ λ³κ²½νλ©΄ λ©λλ€.ex) ASCENDING_TEST Activate = false
π κ°μ
Go μΈμ΄λ λ°°μ΄κ³Ό μ¬λΌμ΄μ€κ° ꡬλΆλμ΄ μμ΅λλ€. νμ§λ§, μΌλ°μ μΌλ‘ κΈ°ν μΈμ΄μμλ λ°°μ΄μ΄ μ΅μνκΈ° λλ¬Έμ ν΄λΉ μκ³ λ¦¬μ¦μ μ€λͺ ν λμλ λ°°μ΄λ‘ ν΅μΌνμ¬ μ€λͺ ν©λλ€.
νμ¬ μ λ°μ΄νΈ λ μ λ ¬ μκ³ λ¦¬μ¦:
Bubble Sort
λ²λΈ μ λ ¬μ μΈμ ν μμλ₯Ό λ°λ³΅μ μΌλ‘ λΉκ΅νκ³ κ΅ννλ λ°©μμ λλ€. ν΄λΉ ꡬνμ μ΄λ―Έ λ°°μ΄μ΄ μ λ ¬λμ΄μλ κ²½μ° μ λ ¬μ μ’ λ£νλλ‘ μ΅μ νλμ΄ μμ΅λλ€. μ΅μ νλ₯Ό μνμ§ μλλ€λ©΄, bubbleSort ν¨μμμ swapped λ³μλ₯Ό μμ λ° ν΄λΉ 쑰건문μ μμ νλ©΄ λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | Yes | total : |
Cocktail Sort
μΉ΅ν μΌ μ λ ¬μ λ²λΈ μ λ ¬μ κΈ°λ°ν λ³ν λ μκ³ λ¦¬μ¦μ λλ€. Cocktail shaker sort(μΉ΅ν μΌ μ °μ΄μ»€ μ λ ¬), bidirectional bubble sort(μλ°©ν₯ λ²λΈ μ λ ¬), cocktail sort(μΉ΅ν μΌ μ λ ¬), shaker sort(μ °μ΄μ»€ μ λ ¬) μ΄λΌκ³ λ λΆλ¦½λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | Yes | total : |
Insertion Sort
μ½μ μ λ ¬μ κ° λ°λ³΅λ§λ€ λ°°μ΄μ μμμλΆν° μ°¨λ‘λλ‘ μ΄λ―Έ μ λ ¬λ λ°°μ΄ λΆλΆκ³Ό λΉκ΅νμ¬ μμ μ μμΉλ₯Ό μ°Ύμ μ½μ μμλ₯Ό μ°Ύμ μ¬λ°λ₯Έ μμΉμ λ°°μΉνκ² λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | Yes | total : |
Selection Sort
μ ν μ λ ¬μ μ λ ¬λμ§ μμ λΆλΆμμ κ° λ°λ³΅μ ν΅ν΄ κ°μ₯ μμ μμλ₯Ό μ°Ύμ μ μμΉμ λ°°μΉνκ² λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |
Shell Sort
μ Έ μ λ ¬μ μ½μ μ λ ¬μ νμ₯ν λ²μ μ λλ€. λ¨Όμ μΌμ κ°κ²©μΌλ‘ μλ‘ λ©λ¦¬ λ¨μ΄μ Έ μλ μμλ₯Ό μ½μ μ λ ¬ν΄ λκ°λ©΄μ λ€μμλ κ·Έ μ¬μ΄μ κ°κ²©μ μ€μ¬λκ°λ©΄μ μ λ ¬νκ² λ©λλ€.
*μ μ© λ Gap μνμ€λ λ€μκ³Ό κ°μ΅λλ€. Ciura sequence
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
depends on gap sequence | Yes | No | total : |
Merge Sort
λ³ν© μ λ ¬μ λΆν μ 볡 μκ³ λ¦¬μ¦μ κΈ°λ°μΌλ‘ ν©λλ€.
κ°λ μ μΌλ‘ λ³ν© μ λ ¬μ λ€μκ³Ό κ°μ΄ μλν©λλ€:
- μ λ ¬λμ§ μμ nκ°μ μμλ₯Ό κ°λ λ°°μ΄μ μ¬κ·μ μΌλ‘ μ΅μ νλ μ΄μμ μμλ₯Ό ν¬ν¨νλ λ°°μ΄μ΄ λλλ‘ μ λ°μΌλ‘ λλλλ€(μμκ° ν κ°λ§ μλ λ°°μ΄μ μ λ ¬λ κ²μΌλ‘ κ°μ£Όλ©λλ€).
- λΆν λ λ°°μ΄μ΄ λͺ¨λ ν©μ³μ§ λ κΉμ§ λ°λ³΅μ μΌλ‘ λ³ν©νμ¬ μ λ ¬ ν©λλ€.
3κ°μ§ μ νμ λ³ν© μ λ ¬μ μ§μν©λλ€.
- top-down
νν₯μ λ³ν© μ λ ¬ μκ³ λ¦¬μ¦μ λΆν λ λ°°μ΄μ ν¬κΈ°κ° 1μ΄ λ λκΉμ§ λ°°μ΄μ μ¬κ·μ μΌλ‘ λΆν ν λ€μ ν΄λΉ νμ λ°°μ΄λ€μ λ³ν©νμ¬ μ λ ¬λ λͺ©λ‘μ μμ±ν©λλ€. - bottom-up
μν₯μ λ³ν© μ λ ¬ μκ³ λ¦¬μ¦μ ν¬κΈ°κ° 1μΈ nκ°μ νμ λ°°μ΄μ λ λ²νΌ μ¬μ΄μμ μ λ€λ‘ νμ λ°°μ΄λ€μ λ°λ³΅μ μΌλ‘ λ³ν©ν©λλ€. - parallel
λ³λ ¬ λ³ν© μ λ ¬ μκ³ λ¦¬μ¦μ μ¬κ· νΈμΆμ λ³λ ¬νλ₯Ό ν΅ν΄ νμ λ°°μ΄μ ν¬κΈ°κ° μκ³κ°λ³΄λ€ μμμ§ λκΉμ§ λ°°μ΄μ μ¬κ·μ μΌλ‘ λΆν ν λ€μ λ³ν©νλ νν₯μ μ λ ¬μ μνν©λλ€. μ΄ λ, μκ³κ°λ³΄λ€ μμ νμ λ°°μ΄λ€μ μν₯μ μ λ ¬μ μ¬μ©νμ¬ μ λ ¬νκ² λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
No | Yes | total : |
Heap Sort
ν μ λ ¬μ λ°°μ΄μ νμ μ리μ²λΌ λ°°μ΄μμ μμλ₯Ό νλμ© μ κ±°ν λ€μ λ°°μ΄μ μ λ ¬λ λΆλΆμ μ½μ νμ¬ μ λ ¬νκ² λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |
Quick Sort
ν΅ μ λ ¬μ λ°°μ΄μμ νΉμ νΌλ²μ μ νν λ€μ νΌλ²λ³΄λ€ μμμ§ ν°μ§μ λ°λΌ λ€λ₯Έ μμλ₯Ό λ κ°μ νμ λ°°μ΄λ‘ λΆν νκ² λλ λΆν μ 볡 μκ³ λ¦¬μ¦μ κΈ°λ°μΌλ‘ ν©λλ€. μ¬κ·μ μΌλ‘ μ΄ κ³Όμ μ κ±°μ³ μ λ ¬λ©λλ€.
3κ°μ§ μ νμ ν΅ μ λ ¬μ μ§μν©λλ€.
- left-pivot (+parallel)
μΌμͺ½ νΌλ² ν΅ μ λ ¬μ μΌμͺ½ μμλ₯Ό νΌλ²μΌλ‘ μ ννμ¬ μ λ ¬ν©λλ€. - middle-pivot (+parallel)
μ€κ° νΌλ² ν΅ μ λ ¬μ μ€κ° μμλ₯Ό νΌλ²μΌλ‘ μ ννμ¬ μ λ ¬ν©λλ€. - right-pivot (+parallel)
μ€λ₯Έμͺ½ νΌλ² ν΅ μ λ ¬μ μ€λ₯Έμͺ½ μμλ₯Ό νΌλ²μΌλ‘ μ ννμ¬ μ λ ¬ν©λλ€.
λν κ° μκ³ λ¦¬μ¦μ μ¬κ· νΈμΆμ λ³λ ¬νλ μ§μν©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |
Dual-Pivot Quick Sort
μ΄μ€ νΌλ² ν΅ μ λ ¬μ Quick Sortλ₯Ό κΈ°λ°μΌλ‘ νμ§λ§, λ°°μ΄μμ λ κ°μ μμλ₯Ό νΌλ²(pivot)μΌλ‘ μ ννμ¬ μ λ ¬νλ λ°©μμ μ°¨μ΄κ° μμ΅λλ€. μ λ ¬ν λ°°μ΄μμ λ κ°μ μμ(νΌλ²)λ₯Ό μ ννκ³ λλ¨Έμ§ μμλ€μ μμ νΌλ²(small pivot)λ³΄λ€ μμ μμ, νΌλ² μ¬μ΄μ μλ μμ, ν° νΌλ²(big pivot)λ³΄λ€ ν° μμλ‘ κ΅¬λΆνμ¬ λ°°μ΄μ λΆν νκ³ μ΄λ¬ν νν°μ μ μ¬κ·μ μΈ κ³Όμ μ ν΅ν΄ μ λ ¬νκ² λ©λλ€.
2κ°μ§ μ νμ μ΄μ€ νΌλ² ν΅ μ λ ¬μ μ§μν©λλ€.
- non-parallel
μ λ ¬ν λ°°μ΄μμ λ κ°μ μμ(νΌλ²)λ₯Ό μ ννκ³ λλ¨Έμ§ μμλ€μ μμ νΌλ²(small pivot)λ³΄λ€ μμ μμ, νΌλ² μ¬μ΄μ μλ μμ, ν° νΌλ²(big pivot)λ³΄λ€ ν° μμλ‘ κ΅¬λΆνμ¬ λ°°μ΄μ λΆν νκ³ μ΄λ¬ν νν°μ μ μ¬κ·μ μΈ κ³Όμ μ ν΅ν΄ μ λ ¬νκ² λ©λλ€. - parallel
μ¬κ· νΈμΆμ λ³λ ¬νλ₯Ό ν΅ν΄ κ°κ°μ μ λ ¬ μκ³ λ¦¬μ¦μ λΆν λ λ°°μ΄μ ν¬κΈ°κ° μκ³κ°λ³΄λ€ μμ λκΉμ§ λ°°μ΄μ μ¬κ·μ μΌλ‘ λΆν ν λ°°μ΄μ λ³ν©νμ¬ μ λ ¬νκ² λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |
Binary Insertion Sort
μ΄μ§ μ½μ μ λ ¬μ μ½μ μ λ ¬μ κΈ°λ°μΌλ‘ ν νμ₯ λ²μ μ λλ€. μ΄μ§ μ λ ¬μ΄λΌκ³ λ ν©λλ€. μ΄μ§ μ½μ μ λ ¬μ μ΄μ§ κ²μ(Binary Search)μ μ¬μ©νμ¬ κ° λ°λ³΅ κ³Όμ μμ νΉμ μμλ₯Ό μ½μ ν μμΉλ₯Ό μ°Ύμ μ½μ νκ² λ©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | yes | total : |
Tim Sort
Timsortλ λ€μν μ’
λ₯μ μ€μ λ°μ΄ν°μμ μ μνλλλ‘ μ€κ³λ μκ³ λ¦¬μ¦μΌλ‘, λ³ν© μ λ ¬κ³Ό μ½μ
μ λ ¬(λλ μ΄μ§ μ½μ
μ λ ¬)μμ νμλμ΄ νΌν© λ μμ μ μΈ νμ΄λΈλ¦¬λ μ λ ¬ μκ³ λ¦¬μ¦ μ
λλ€. Python νλ‘κ·Έλλ° μΈμ΄μμ μ¬μ©νκΈ° μν΄ 2002λ
Tim Petersμ μν΄ κ΅¬νλμμ΅λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | yes | total : |
Bitonic Sort
λ°μ΄ν λ μ λ ¬μ λ³λ ¬λ‘ μ€νν μ μλ λΉκ΅ κΈ°λ° μ λ ¬ μκ³ λ¦¬μ¦μ λλ€. 무μμ μ«μ μνμ€λ₯Ό λ¨μ‘° μ¦κ°νλ€κ° κ°μνλ λΉνΈ μνμ€λ‘ λ³ννλ λ° μ€μ μ λ‘λλ€. λ³λ ¬ νκ²½μ μ΅μ ν λμ΄μμΌλ©° GPU λ³λ ¬ μ²λ¦¬λ‘ μ¬μ©λκΈ°λ νμ§λ§, μ¬κΈ°μλ κΈ°ν λ³λ ¬νν μ λ ¬ μκ³ λ¦¬μ¦λ€κ³Ό λ§μ°¬κ°μ§λ‘ GO μΈμ΄μ λμμ± λͺ¨λΈλ‘ ꡬνλ©λλ€.
2κ°μ§ μ νμ μκ³ λ¦¬μ¦μ μ§μν©λλ€.
- non-parallel
λΆν λ λ°°μ΄μ ν¬κΈ°κ° 1μ΄ λ λκΉμ§ λ°°μ΄μ μ¬κ·μ μΌλ‘ λΆν ν λ€μ Bitonic Sequencing Ruleμ λ°λΌ ν΄λΉ νμ λ°°μ΄μ λ³ν©νμ¬ μ λ ¬νκ² λ©λλ€. - parallel
μ¬κ· νΈμΆμ λ³λ ¬νλ₯Ό ν΅ν΄ λΆν λ λ°°μ΄μ ν¬κΈ°κ° μκ³κ°λ³΄λ€ μμμ§ λκΉμ§ λ°°μ΄μ μ¬κ·μ μΌλ‘ λΆν ν λ€μ λΉλ³λ ¬νλ‘ μ ννμ¬ Bitonic Sequencing Ruleμ λ°λΌ νμ λ°°μ΄μ λΆν λ° λ³ν©νμ¬ μμ±ν©λλ€.
COMPLEXITY
Type | Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|---|
non-parallel | Yes | No | total : |
|||
parallel | Yes | No | total : |
Intro Sort
μΈνΈλ‘ μ λ ¬μ μ΅μ
μ κ²½μ°μλ νκ· μ μΌλ‘ λΉ λ₯Έ μ±λ₯κ³Ό λ° (μ κ·Όμ μΌλ‘) μ΅μ ν λ νμ΄λΈλ¦¬λ μ λ ¬ μκ³ λ¦¬μ¦μ
λλ€. ν΅μ λ ¬λ‘ μμνμ¬ μ¬κ· κΉμ΄κ° μ λ ¬λλ λ°°μ΄μ μμ κ°μμ λ°λ₯Έ κΉμ΄ μκ³κ°(maximum depth: ) μμ€μ μ΄κ³Όνλ©΄ ν μ λ ¬λ‘ μ ννκ³ λΆν λ λ°°μ΄μ μμ κ°μκ° κΈΈμ΄ μκ³κ°(16) λ―Έλ§μ΄λ©΄ μ½μ
μ λ ¬λ‘ μ νν©λλ€.
2κ°μ§ μ νμ μκ³ λ¦¬μ¦μ μ§μν©λλ€.
-
non-parallel
μ λ ¬ν λ°°μ΄μμ ν΅ μ λ ¬μ μ¬μ©ν λ μμ(νΌλ²)λ₯Ό μ ννκ³ μ ν λ νΌλ²μ μ μΈν λ€λ₯Έ μμλ€μ΄ νΌλ²λ³΄λ€ μκ±°λ ν°μ§ μ¬λΆμ λ°λΌ λ κ°μ νμ λ°°μ΄λ‘ λΆν νκ³ μ¬κ· κΉμ΄κ° νΉμ μκ³κ°(maximum depth:)μ λκΈ° μ κΉμ§ μ΄λ¬ν κ³Όμ μ μ¬κ·μ μΌλ‘ κ±°μΉ©λλ€.
-
parallel
μ¬κ· νΈμΆμ λ³λ ¬νλ₯Ό ν΅ν΄ κ° λ³λ ¬ν λ μ΄μ€ νΌλ² ν΅ μ λ ¬ μκ³ λ¦¬μ¦μ λΆν λ λ°°μ΄μ ν¬κΈ°κ° μκ³κ°λ³΄λ€ μμμ§κΈ° μ κΉμ§ λ°°μ΄μ μ¬κ·μ μΌλ‘ λΆν νμ¬ μ λ ¬ν©λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |
Cycle Sort
μν μ λ ¬μ in-place μ λ ¬μ΄μ λΆμμ μ λ ¬ μκ³ λ¦¬μ¦μΌλ‘, λ°°μ΄μ λν΄ μ΄ μ°κΈ°(write) μμ κ΄μ μμ κ°μ₯ μ κ² μ°κΈ° μν λΉκ΅ μ λ ¬ μκ³ λ¦¬μ¦ μ λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |
Odd-Even Sort
μ»΄ν¨ν μμ€ν κ΄μ μμ νμ§ μ λ ¬μ μλ μνΈ λ‘컬 μ°κ²°μ λ³λ ¬ νλ‘μΈμμμ μ¬μ©νκΈ° μν΄ κ°λ°λ λΉκ΅μ κ°λ¨ν μ λ ¬ μκ³ λ¦¬μ¦μ λλ€
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | Yes | total : |
Odd-Even Merge Sort
νμ§ λ³ν© μ λ ¬μ μ¬μ΄μ¦λ
, κΉμ΄λ
λ₯Ό κ°λ λ€νΈμν¬ μ λ ¬μ μν΄ Ken Batcher μ λ ¬ μκ³ λ¦¬μ¦ μ
λλ€.
COMPLEXITY
Type | Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|---|
non-parallel | Yes | yes | total : |
|||
parallel | Yes | yes | total : |
Comb Sort
μ½€ μ λ ¬μ μλ 1980λ WΕodzimierz Dobosiewiczμ Artur Borowyκ° μ€κ³ν λΉκ΅μ κ°λ¨ν μ λ ¬ μκ³ λ¦¬μ¦μΌλ‘, λμ€μ Stephen Laceyμ Richard Boxκ° 1991λ μ μ¬λ°κ²¬(μ΄ λ "Combsort"λΌκ³ μ΄λ¦μ μ§μ )νμ΅λλ€. Comb μ λ ¬μ μ Έ μ λ ¬κ³Ό μ μ¬ν λ°©μμΌλ‘ λ²λΈ μ λ ¬μ κ°μ νμ¬ μ±λ₯μ ν₯μ μν¨ μ λ ¬ μκ³ λ¦¬μ¦μ λλ€.
COMPLEXITY
Worst-Case | Average-Case | Best-Case | in-place | stable | Space Complexity |
---|---|---|---|---|---|
Yes | No | total : |