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
수정 아이콘
와...진짜 할말이 안나오네요 크크크크크크크 창의력 대장들 같으니라고
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
253702 [LOL] 입롤의 신 - 킨드레드 편 [27] Finding Joe5356 15/10/14 5356
253701 [유머] 호날두 보고 있나? [24] 에버그린6333 15/10/14 6333
253700 [기타] 비만치료제의 부작용 [15] 모여라 맛동산8269 15/10/14 8269
253699 [LOL] EDG 비장의 카드 출격 [27] 다크템플러6840 15/10/14 6840
253698 [방송] 폐부를 찌르는 김구라의 한마디 [24] No.1011854 15/10/14 11854
253697 [스포츠] 현재 MLB 포스트시즌 살아남은 팀들의 마지막 월시 우승년도.txt [23] SKY927360 15/10/14 7360
253696 [서브컬쳐] 한국어 때문에 고생하는 곰돌이들 [17] 인간흑인대머리남캐8273 15/10/14 8273
253695 [스포츠] 고종 40년 이후 처음으로... [20] 만일....100018481 15/10/14 8481
253694 [기타] 오늘자 클로저 이상용 #633 [13] 빠독이3058 15/10/14 3058
253693 [유머] 어떤 유튜브 재생 목록 [21] 마스터충달6360 15/10/14 6360
253692 [기타] 일본 여고생 모델 [23] 마스터충달19156 15/10/14 19156
253691 [유머] 아이폰 흔한 자동 완성어 [2] 길갈4519 15/10/14 4519
253690 [게임] 마리오 정도면 눈 감고도 하지 [5] 마스터충달5648 15/10/14 5648
253689 [유머] (브금주의) 왕좌의 게임 x 게임의 왕좌 o [11] 마스터충달3779 15/10/14 3779
253688 [유머] 이거 먹는 거 아니었어? [9] OrBef6283 15/10/14 6283
253687 [유머] 블랙 커피 좋아하면 싸이코패스 [26] OrBef8694 15/10/14 8694
253686 [게임] [하스스톤] 안녕 손놈, 안녕 워송. [39] 길갈6171 15/10/14 6171
253685 [스포츠] [야구] 송OK OK [7] 곰느님5553 15/10/14 5553
253684 [연예인] 지금은 볼 수 없는 머라이어 캐리.avi [9] 삭제됨4233 15/10/14 4233
253683 [연예인] 아이유 티져 'The shower(푸르던)' 공개 [26] 아리마스6059 15/10/14 6059
253682 [연예인] 케이팬 모이세요 [14] 좋아요5383 15/10/13 5383
253681 [연예인] 꼬부기류 [10] 좋아요6235 15/10/13 6235
253680 [연예인] 호불호가 갈리는 나이 [12] 좋아요6739 15/10/13 6739
목록 이전 다음
댓글

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