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
수정 아이콘
와...진짜 할말이 안나오네요 크크크크크크크 창의력 대장들 같으니라고
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
253793 [스포츠] [MLB] ALDS 4차전 당시 텍사스 주지사의 설레발.jpg [5] SKY925094 15/10/15 5094
253792 [동물&귀욤] 찌개 끓는다~ [5] 낭천4199 15/10/15 4199
253791 [동물&귀욤] 당신을 살해하겠습니다. [18] 법규5676 15/10/15 5676
253790 [연예인] 아이돌 음악방송 최고 시청률.swf [7] 삭제됨3891 15/10/15 3891
253789 [스포츠] [253787번글 관련] ???:텍사스의 패배는 해멀스 잘못 [2] giants3400 15/10/15 3400
253788 [스포츠] [해외축구] 이구역 따까리는 나야!!(스압, 데이터 주의) [6] 배주현4543 15/10/15 4543
253787 [스포츠] 총체적 난국 [20] 에버그린5273 15/10/15 5273
253786 [LOL] 롤드컵 무작정 따라하기 - 미드 올라프편 [3] rnsr4726 15/10/15 4726
253784 [연예인] 레드벨벳 - 어머니.gif [12] 배주현4890 15/10/15 4890
253783 [동물&귀욤] 우리 애는 사람 안물어요~ [6] 물범6011 15/10/15 6011
253782 [스포츠] [mlb] 영화보다 더한 연출력 [5] 만일....100014369 15/10/15 4369
253781 [게임] 2014 온라인 게임 매출 TOP 10 [23] 요그사론7446 15/10/15 7446
253780 [스포츠] [야구] 다시는 ESPN을 무시하지말라 [15] 문앞의늑대7250 15/10/15 7250
253776 [기타] 오늘자 클로저 이상용 #634 [4] 빠독이2990 15/10/15 2990
253775 [연예인] 전지윤 비공개 랲 영상 [12] 스터너5717 15/10/15 5717
253774 [동물&귀욤] 시바, 네가 배트맨이었다니. [10] 마스터충달7322 15/10/15 7322
253773 [LOL] 우울할때 보는 3단 고음 [30] 빛돌v7122 15/10/15 7122
253771 [연예인] 섹시가수 [4] 좋아요6409 15/10/15 6409
253770 [연예인] 친구의 아내에게 바치는 사랑의 찬가.avi [5] 비타에듀6644 15/10/15 6644
253769 [연예인] 김선신 아나운서 인터뷰 [4] 유재석7051 15/10/15 7051
253768 [연예인] 오늘자 홍진영 직캠 [6] 삭제됨6875 15/10/15 6875
253767 [게임] [하스스톤] 양심없는 노루 [11] 1일3똥4659 15/10/15 4659
253766 [텍스트] 보증 서서 대박난 경험 썰 [18] 토다기13078 15/10/15 13078
목록 이전 다음
댓글

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