PGR21.com
- 모두가 건전하게 즐길 수 있는 유머글을 올려주세요.
- 유게에서는 정치/종교 관련 등 논란성 글 및 개인 비방은 금지되어 있습니다.
Date 2015/10/13 14:18:24
Name Rated
File #1 캡처.PNG (12.7 KB), Download : 45
출처 http://todayhumor.com/?humorbest_1132722
Subject [기타] [컴공] 정신나간 정렬 알고리즘


머지 하다가 그제서야 이해했습니다..

저런 정신나간 생각을 한것 자체가 대단합니다.

단 아규먼트가 많을시 속도장담은 ^^;

웨건은 귀찮아서 등판안합니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
15/10/13 14:20
수정 아이콘
크크크크크크 무슨 정렬이라고 불러야할까요..?
15/10/13 14:22
수정 아이콘
슬립정렬알고리즘 이죠 크크크크
15/10/13 14:23
수정 아이콘
신박하네요.

sleep() sort 라고 불러야 할려나요;;;

대신 정렬할 숫자 갯수 만큼 process가 fork되면;;;
나일레나일레
15/10/13 14:25
수정 아이콘
처음에는 신박하네 정도로 생각했다가, 보면볼수록 화가 나던 정렬이네요.
15/10/13 14:26
수정 아이콘
착한 빡침 인정합니다
랜덤여신
15/10/13 14:30
수정 아이콘
인자의 수와는 관계가 없습니다. 가장 큰 수에 비례하죠. 시간 복잡도로 따지면 O(n)이 아니라 O(max(v))인 셈입니다.
15/10/13 14:33
수정 아이콘
아 맞네요..
다이어트
15/10/13 14:33
수정 아이콘
여러개가 동시에 돌아가니 O(nv) 로 봐야하지 않나요.
테바트론
15/10/13 14:40
수정 아이콘
여러 개가 돌아가도 어차피 가장 큰 v시간 안에서 전부 실행이 끝나니까요.
단 메모리 복잡도는 음....
15/10/13 14:31
수정 아이콘
O(n)?!??!
15/10/13 14:33
수정 아이콘
문송합니다 ㅠㅠ
세츠나
15/10/13 14:38
수정 아이콘
이걸 printf하지 말고 배열에 집어넣으면 실제로 사용할 수도 있지 않을까...
fork 대신 pthread 돌려서 값 받아오면 한정적인 경우에는 상당히 빠른 소팅이 될 듯
근데 실제로 써먹을 수 있는 경우는 거의 없을거 같군요...
와트니
15/10/13 14:39
수정 아이콘
이과망했으면...
아만자
15/10/13 14:39
수정 아이콘
http://rosettacode.org/wiki/Sorting_algorithms/Sleep_sort 다양한 버전을 체험하세요~
세츠나
15/10/13 14:41
수정 아이콘
아 여기서 이미 스레드를 이용하고 있네요 크크
Cazellnu
15/10/13 14:41
수정 아이콘
사실 소팅을 하지는 않고 슬립순서대로 찍는것 뿐이니 소트라고 하기엔 뭣하기도 합니다.
세츠나
15/10/13 14:43
수정 아이콘
여기선 슬립 순서대로 printf를 하고 있지만 컨테이너를 이용하면 되죠.
예를 들면 vector<int> sorted 같은걸 만들어서 스레드가 종료되는 순서대로
sorted.push_back(ret); 해주면 되죠. 잠깐 생각해본거지만 돌아갈 거 같아요.
세츠나
15/10/13 14:52
수정 아이콘
딱히 컨테이너 안써도 그냥 배열 잡고 카운터 만들어서 스레드 종료되면 리턴값 받아와서
array[counter] 위치에 집어넣고 counter++ 하면 되지 않나요...될 거 같은데...
써니는순규순규해
15/10/13 15:21
수정 아이콘
대충 테스트 해봤는데 잘 되네요 크크크
unity C# 에서 StartCoroutine - IEnumerator 랑 yield return null 이용 했습니다.

public int arrayCount = 0;
public int[] randArrays;
public int[] resultArray;
// Use this for initialization
void Start () {
randArrays = new int[Random.Range(10, 20)];
for (int i=0; i<randArrays.Length; i++)
{
randArrays[i] = Random.Range(i + 5, 1000);
}
resultArray = new int[randArrays.Length];
for (int i=0; i<randArrays.Length; i++)
{
StartCoroutine( sleepNull(randArrays[i]));
}
arrayCount = 0;
}

// Update is called once per frame
void Update () {

}
IEnumerator sleepNull(int arrayNum)
{
for(int i=0;i<arrayNum;i++)
{
yield return null;
}
Debug.Log ("arrayNum : " + arrayNum);
resultArray [arrayCount] = arrayNum;
arrayCount++;
}

resultArray 안에 정렬된 값이 순서대로 잘 들어 오네요...대신 시간이...

본문처럼 시간으로도 해봤습니다. 마지막만
IEnumerator sleepNull(int arrayNum)
{
yield return new WaitForSeconds(arrayNum);
Debug.Log ("arrayNum : " + arrayNum);
resultArray [arrayCount] = arrayNum;
arrayCount++;
}
이렇게 바꾸면 되고, 시간 단위로 잘 동작 하네요..
세츠나
15/10/13 15:42
수정 아이콘
Profit!
한글8자
15/10/13 17:08
수정 아이콘
출력 스트림이 콘솔일 뿐이지 정확하게 정렬 알고리즘이 하는 일에 부합하는 것 같습니다.
트릴비
15/10/13 14:42
수정 아이콘
크크크크크크크크크크
트릴비
15/10/13 14:44
수정 아이콘
n개의 쓰레드를 쓴다니 컨텍스트 스위칭을 감수하면서라도 쓸만한 엄청난 성능의 알고리즘이겠죠?
15/10/13 14:43
수정 아이콘
그래도 c를 재활용함으로써 메모리의 증가도 최소화하고 있습니다. 나름 심오한 소스입니다 크크
티오 플라토
15/10/13 14:46
수정 아이콘
그러니까, 1은 1초 기다렸다가 프린트하고, 2는 2초 기다렸다가 프린트하고, 11은 11초 기다렸다가 프린트하니까 순서대로 프린팅된다는 소스인거죠?
써니는순규순규해
15/10/13 15:03
수정 아이콘
15/10/13 14:59
수정 아이콘
이과망해라
빈즈파덜
15/10/13 14:59
수정 아이콘
sleep이 정확한 초단위로 동작한다면 문제 없는 소스인거 같아요~
세크리
15/10/13 15:15
수정 아이콘
그냥 멀티프로세서 실행 환경에 따라 extream한 경우 잘못작동할수도 있는거 아닌가요? fork하는 도중 중간에 뭐가 끼어들어서 몇초씩 잡아먹으면 그냥 틀린것 같은데...
The Special One
15/10/13 15:19
수정 아이콘
같이 놀고싶어도 알아들을수가 없..
김성수
15/10/13 15:27
수정 아이콘
왜 피지알에서는 이런 글이 흥하는걸까 -_-; 크크
돌고래씨
15/10/13 17:34
수정 아이콘
프로그래머들이 많은거 같아요 크크 얼마나 되려나...
Blooming
15/10/13 15:33
수정 아이콘
창의력대장 인정합니다;;
검정치마
15/10/13 15:35
수정 아이콘
뭔지 모르겠지만 일단 웃어야 겠다.
크크크크크킄하하하하
아이유
15/10/13 15:37
수정 아이콘
이게 뭔소리야..
15/10/13 15:40
수정 아이콘
이과 망했으면...
바닷내음
15/10/13 15:41
수정 아이콘
알기 쉽게 말하자면 순서를 크기 순서대로 정렬하는데 기존에 있는 여러 정렬 방식은 어쨌거나 숫자들을 비교하면서 정렬하는데 저거는...
5 <- 넌 5초뒤에 출력되라
1 <- 넌 1초뒤
2 <- 넌 2초뒤
....

고로 1초뒤에 1이 2초뒤에 2가... 마지막으로 11초뒤에 11이 출력됨으로써 정렬이 완료됩니다;;

시간과 리소스(숫자 하나하나마다 프로세스를 띄우므로;;) 를 무지막지하게 낭비하지만 발상이 독특한;;; 기법이자 결과가 프린트로밖에 남지않는..
쓸데없이 고퀄? 인 방식이네요.
세츠나
15/10/13 15:43
수정 아이콘
fork쓰지 말고 thread쓰고 결과값을 print하지말고 배열에 집어넣으면 될 것 같습니다.
고기덕후
15/10/13 15:43
수정 아이콘
Child process들이 어차피 sleep 상태에 가기 때문에 CPU 자원 소모는 그리 문제되지 않을 것으로 보입니다.

문제는 윗분이 말씀하신 것처럼 sorting time이 O(max(v))인 것과... 일반적으로 리눅스에서 user 당 max process 수를 정해두기 때문에 숫자 개수가 10000~20000개를 넘어가면 동작하지 않는다는 것 정도? Sleep의 길이가 너무 짧아지면 race condition에 관련된 이슈가 있을 것 같기도 하고...
15/10/13 15:46
수정 아이콘
이과 망했으면...
F.Nietzsche
15/10/13 15:48
수정 아이콘
창의적이고 신묘하군요 크크
Dark and Mary(닭한마리)
15/10/13 15:59
수정 아이콘
문과 흥했으면...
태랑ap
15/10/13 15:59
수정 아이콘
이과 망했으면...
15/10/13 16:09
수정 아이콘
C/C#문법을 몰라 웃지못하는 컴공이 여기있습니다!
fAwnt4stIC
15/10/13 16:56
수정 아이콘
C를 아는데 이해를 못하는 나는 뭔가....
한글8자
15/10/13 17:00
수정 아이콘
크크 쓸데는 없지만 크크크 창의력에 점수를 줘야겠군요
litlwing
15/10/13 17:16
수정 아이콘
무릎을 탁! 치고 갑니다 ^^
위에서들 말씀하시는대로, printf 대신 적절한 자료구조에 리턴값을 (경쟁적으로) 넣는 것으로 하고
슬립 값을 초단위 대신 가능한한 작은 단위로 슬립하게 하면 나름 쓸만한 성능이 나오지 않을까요? 흐흐...

ps. 하지만 결과값 넣는 자료구조 사용할때 세마포를 쓰는 걸로 망할듯...
15/10/13 21:05
수정 아이콘
와...진짜 할말이 안나오네요 크크크크크크크 창의력 대장들 같으니라고
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
254226 [LOL] 겜게 글을 보고 떠오른 슬롤덩크.jpg [4] Practice5199 15/10/19 5199
254225 [LOL] 스고수가 그라가스 궁을 잘쓰는 이유. [11] 그시기7035 15/10/19 7035
254224 [LOL] 8강 KT vs KOO 스고수 활약상 [39] chamchI8906 15/10/19 8906
254223 [연예인] 왕조현의 농구실력 [10] 마스터충달7480 15/10/19 7480
254222 [기타] 섬나라 마트 도시락.jpg [14] 단호박7828 15/10/19 7828
254221 [LOL] 롤잘알 프로들 [11] Leeka6244 15/10/19 6244
254220 [LOL] [스포주의] 오늘 스라가스의 존재감이 왠지 모르게 낯이 익는다면? [10] 잔넨나가라5038 15/10/19 5038
254219 [LOL] 이번 4강 대진표.najin [19] 우파루파5739 15/10/19 5739
254218 [LOL] 에어워크 [6] 삭제됨4298 15/10/19 4298
254217 [스포츠] 최정이 악질인 이유 [9] KamoneGIx7082 15/10/19 7082
254216 [LOL] 공포의 피오라.gif [6] 삭제됨5435 15/10/19 5435
254215 [스포츠] 흔한 에이스 투수의 우상 [8] QM37034 15/10/19 7034
254214 [연예인] 호불호가 갈리는 통화말투 [4] 좋아요4698 15/10/19 4698
254213 [LOL] 오늘 KTvsKOO 2경기 보고 생각난 영상 하나 [8] Finding Joe4886 15/10/19 4886
254212 [기타] 예비군 식판 도시락(?) [60] 11075 15/10/18 11075
254211 [스포츠] [슬램덩크] 진정한 데우스 엑스 마키나 [10] 신유7680 15/10/18 7680
254209 [LOL] 여러분 니달리 하세요. [23] 예니치카7956 15/10/18 7956
254208 [연예인] 99년생 vs 99년생 [15] 좋아요7653 15/10/18 7653
254207 [연예인] 통통한 여자 [10] 좋아요6201 15/10/18 6201
254206 [스포츠] 데이비드 르뮤 하이라이트 [19] litmus5999 15/10/18 5999
254205 [유머] 섬나라 기차 도시락.jpg [30] 善兒9285 15/10/18 9285
254204 [게임] [하스스톤] 마니커 붐 [6] 비익조3745 15/10/18 3745
254203 [스포츠] [복싱]오늘자 골로프킨 vs 르뮤 기록 [24] 비익조7259 15/10/18 7259
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로