-
V language : Sleep Sort컴퓨터/V language 2020. 8. 22. 16:01728x90반응형
Sleep Sort
Sleep sort란 4chan에 장난식으로 올라온 정렬 방법
task + time.sleep()을 이용해서 배열 값 만큼 sleep해서
먼저 출력되는 순서대로 보면 정렬된 배열이다.
1. 문법 살펴보기
V에서 concurrency(병행)으로 task를 실행하려면 go func()을 사용하면 된다.
※ 하지만, 다른 mutable 변수를 사용할 수 없어서, 출력 값을 저장하진 못했다.
※ V 0.1.29 기준으로 Global 변수도 없다.
import sync import time fn task(id, duration int, mut wg sync.WaitGroup) { println("task ${id} begin") time.sleep_ms(duration) println("task ${id} end") wg.done() } fn main() { mut wg := sync.new_waitgroup() wg.add(3) go task(1, 500, mut wg) go task(2, 900, mut wg) go task(3, 100, mut wg) wg.wait() println('done') } // Output: task 1 begin // task 2 begin // task 3 begin // task 3 end // task 1 end // task 2 end // done
2. Sleep Sort 구현
import time import sync // Sleep Sort is time-based sorting technique. fn main() { mut wg := sync.new_waitgroup() test_arr := [3, 2, 1, 4, 1] wg.add(test_arr.len) for i, value in test_arr { go sort(i, value, mut wg) } wg.wait() println('Printed sorted array') /* 1 1 2 3 4 */ } // function in `go` statement cannot contain mutable non-reference arguments fn sort(id, value int, mut wg sync.WaitGroup) { time.sleep(value) println(value) wg.done() }
3. 참고
(개인) Github V algorithms : https://github.com/Alfex4936/V-algorithms
728x90'컴퓨터 > V language' 카테고리의 다른 글
V lang: FFI 사용하기 (0) 2021.07.06 V language : Binary Search Tree (BST) (0) 2020.08.21 V language : Introspective Sort (0) 2020.08.20