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
수정 아이콘
와...진짜 할말이 안나오네요 크크크크크크크 창의력 대장들 같으니라고
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
253688 [유머] 이거 먹는 거 아니었어? [9] OrBef6285 15/10/14 6285
253687 [유머] 블랙 커피 좋아하면 싸이코패스 [26] OrBef8703 15/10/14 8703
253686 [게임] [하스스톤] 안녕 손놈, 안녕 워송. [39] 길갈6174 15/10/14 6174
253685 [스포츠] [야구] 송OK OK [7] 곰느님5555 15/10/14 5555
253684 [연예인] 지금은 볼 수 없는 머라이어 캐리.avi [9] 삭제됨4236 15/10/14 4236
253683 [연예인] 아이유 티져 'The shower(푸르던)' 공개 [26] 아리마스6064 15/10/14 6064
253682 [연예인] 케이팬 모이세요 [14] 좋아요5391 15/10/13 5391
253681 [연예인] 꼬부기류 [10] 좋아요6239 15/10/13 6239
253680 [연예인] 호불호가 갈리는 나이 [12] 좋아요6745 15/10/13 6745
253679 [연예인] 지금은 들을수 없는 머라이어캐리 리즈시절 [17] Croove7645 15/10/13 7645
253677 [스타1] 폭렬테란.avi [6] 윤열이는요4543 15/10/13 4543
253676 [텍스트] 신인걸그룹과 나 좋아요3617 15/10/13 3617
253675 [연예인] 문란한 정은지 [6] 좋아요6975 15/10/13 6975
253674 [LOL] 롤드컵이 몰고 온 재앙 [11] 철혈대공6389 15/10/13 6389
253673 [연예인] [에이핑크계층]남주 캐릭터의 상태가? [8] 좋아요3001 15/10/13 3001
253672 [동물&귀욤] 개들하고 놀아주는 호랑이 [4] 카우카우파이넌스3991 15/10/13 3991
253671 [연예인] 입금하니 [3] 좋아요4850 15/10/13 4850
253670 [서브컬쳐] 아이유도 유루유리를 보는군요. [2] 여자친구3858 15/10/13 3858
253669 [연예인] 당신이 아재임을 알려드립니다 [6] 좋아요4480 15/10/13 4480
253668 [동물&귀욤] 사자 vs 호랑이 [4] 유리한3662 15/10/13 3662
253667 [연예인] [러블리즈]한명은 어디 갔을까요 [11] 파란토마토3202 15/10/13 3202
253666 [연예인] 마마무 8090메들리 [2] 좋아요2326 15/10/13 2326
253665 [연예인] 러블리즈의 꽃!! [8] 좋아요2989 15/10/13 2989
목록 이전 다음
댓글

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