2012년 7월 14일 토요일

Bubble sort

※ 이해가 잘 되지 않는 부분은 위키피디아 원문을 함께 실었습니다.

버블 정렬은 인접한 항목의 각 쌍을 비교하여, 자리를 작업를 반복적으로 수행하는 간단한 정렬 알고리즘입니다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름입니다. 원소의 비교만으로 동작하기 때문에 비교 정렬입니다. 알고리즘은 간단하지만, 크기가 큰 목록을 정렬할 때는 적합하지 않습니다.

성능
원소의 갯수가 n개 일 때, 최악의 경우와 평균 복잡도는 O(n2) 입니다. 최악의 경우나 평균 복잡도가 O(nlogn)인 많은 정렬 알고리즘이 존재합니다. 심지어, 삽입 정렬 같은 복잡도가 O(n2)인 다른 정렬 알고리즘도, 버블 정렬보다 더 나은 성능을 보이는 경향이 있습니다. 따라서, n값이 클 때 버블 정렬은 실용적이지 못한 정렬 알고리즘 입니다.

토끼와 거북이
The positions of the elements in bubble sort will play a large part in determining its performance. Large elements at the beginning of the list do not pose a problem, as they are quickly swapped. Small elements towards the end, however, move to the beginning extremely slowly. This has led to these types of elements being named rabbits and turtles, respectively.

Various efforts have been made to eliminate turtles to improve upon the speed of bubble sort. Cocktail sort is a bi-directional bubble sort that goes from beginning to end, and then reverses itself, going end to beginning. It can move turtles fairly well, but it retains O(n2) worst-case complexity. Comb sort compares elements separated by large gaps, and can move turtles extremely quickly before proceeding to smaller and smaller gaps to smooth out the list. Its average speed is comparable to faster algorithms like quicksort.

버블 정렬에서 원소의 위치는 성능을 결정하는데 큰 역할을 합니다. 목록의 시작점에 큰 원소는 빠르게 순서가 바뀌는 것에 문제가 되지 않습니다. 그러나 끝에 있는 작은 원소는 매우 천천히 처음으로 이동합니다. 이런 형태의 원소에 토끼와 거북이라는 이름이 붙여졌습니다.
버블 정렬의 속도 향상을 위해 거북이를 제거 하기 위한 다양한 시도가 있습니다. 칵테일 정렬은 이런 목표를 꽤 달성 했지만, 최악의 경우 O(n2)의 복잡도를 갖고 있습니다. 빗 정렬은 큰 gap으로 분리된 원소를 비교함으로써, 거북이를 매우 빠르게 이동시킬 수 있습니다. 더 작고 작은 gap으로 부드럽게 진행함으로써, 이 알고리즘의 평균 속도는 더 빠른 알고리즘인 퀵 정렬과 비교할 만 합니다.


Step-by-step example
숫자 배열 "5 1 4 2 8"을 버블 정렬 알고리즘을 사용하여, 가장 작은 숫자부터 가장 큰 숫자 순으로 정렬하는 예제입니다. 각 pass 에서 비교 되어지는 원소는 굵게 적었습니다. 3번의 pass가 필요합니다.

First Pass:
( 5 1 4 2 8 ) → ( 1 5 4 2 8 ), 처음 두 개의 원소를 비교하여 순서를 바꿉니다.
( 1 5 4 2 8 ) → ( 1 4 5 2 8 ), 5 > 4 이므로 순서를 바꿉니다.
( 1 4 5 2 8 ) → ( 1 4 2 5 8 ), 5 > 2 이므로 순서를 바꿉니다.
( 1 4 2 5 8 ) → ( 1 4 2 5 8 ), 8 > 5 정렬되어 있으므로 순서를 바꾸지 않습니다.


Second Pass:
( 1 4 2 5 8 ) → ( 1 4 2 5 8 )
( 1 4 2 5 8 ) → ( 1 2 4 5 8 ), 4 > 2 이므로 순서를 바꿉니다.
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
정렬은 완료되었지만, 알고리즘은 완료 여부를 알 수 없습니다.
순서가 변하지 않는 한 번의 전체 pass를 수행합니다.


Third Pass:
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )
( 1 2 4 5 8 ) → ( 1 2 4 5 8 )


구현

Pseudocode implementation (의사코드)

알고리즘은 다음과 같이 표현될 수 있습니다. (0-based array):
procedure bubbleSort( A : list of sortable items )
   repeat     
     swapped = false
     for i = 1 to length(A) - 1 inclusive do:
       /* if this pair is out of order */
       if A[i-1] > A[i] then
         /* swap them and remember something changed */
         swap( A[i-1], A[i] )
         swapped = true
       end if
     end for
   until not swapped
end procedure

Optimizing bubble sort (최적화)

The bubble sort algorithm can be easily optimized by observing that the n-th pass finds the n-th largest element and puts it into its final place. So, the inner loop can avoid looking at the last n-1 items when running for the n-th time:

버블 정렬은 n번째 pass에서 n번째 큰 요소를 찾아 최종 위치로 이동하는 것을 관찰함으로써 쉽게 최적화 할 수 있습니다. 그러면 내부 루프는 n번 째 실행시 마지막 n-1 번째 원소의 검토를 하지 않아도 됩니다.

procedure bubbleSort( A : list of sortable items )
    n = length(A)
    repeat
       swapped = false
       for i = 1 to n-1 inclusive do
          if A[i-1] > A[i] then
             swap(A[i-1], A[i])
             swapped = true
          end if
       end for
       n = n - 1
    until not swapped
end procedure

보다 일반적으로, 하나 이상의 원소가 단일 pass에서 그들의 최종 위치로 이동할 수 있습니다. 특히 모든 원소의 정렬이 완료된 후에는 다시 검사할 필요가 없습니다. 이것은 많은 원소의 비교를 건너 뛸 수 있고, 결과적으로 최악의 경우 비교 횟수에서 50% 성능이 개선됩니다. (자리 바꿈의 횟수는 그대로입니다.), 새로운 코드는 "swapped" 변수를 포함하여, 복잡도를 개선했습니다.
의사 코드는 다음과 같습니다:

procedure bubbleSort( A : list of sortable items )
    n = length(A)
    repeat
       newn = 0
       for i = 1 to n-1 inclusive do
          if A[i-1] > A[i] then
             swap(A[i-1], A[i])
             newn = i
          end if
       end for
       n = newn
    until n = 0
end procedure 
버블 정렬 처럼 인접한 원소를 반복적으로 비교하고, 자리를 바꾸면서 성능을 개선한 대체 알고리즘으로 cocktail shaker sort 등이 있습니다.

출처 : http://en.wikipedia.org/wiki/Bubble_sort 발췌 번역(/w Google 번역)

2012년 6월 21일 목요일

새로운 주님의 기도

"하늘에 계신" 하지마라.
세상 일에만 빠져 있으면서.

"우리"라고 하지마라.
나 혼자만 생각하며 살아가면서.

"아버지"라고 하지마라.
서로 아들딸로 살지 않으면서.

"아버지의 이름이 거룩히 빛나시며"라고 하지마라.
자기 이름을 빛내기 위해서 안간힘을 쓰면서.

"아버지의 나라가 오시며"라고 하지마라.
물질 만능의 나라를 원하면서.

"아버지의 뜻이 이루어지소서"라고 하지마라.
내 뜻대로 되기를 기도하면서.

"오늘 저희에게 일용할 양식을 주소서"라고 하지마라.
죽을 때까지 먹을 양식을 쌓아두려 하면서.

"저희에게 잘못한 이를 저희가 용서하오니 저희 죄를 용서하시고"라고 하지마라.
누구엔가 아직도 앙심을 품고 있으면서.

"저희를 유혹에 빠지지 않게 하시고"라고 하지마라.
늘 죄 지을 기회를 찾아다니면서.

"악에서 구하소서"라고 하지마라.
악을 보고도 아무런 양심의 소리를 듣지 않으면서.

"아멘"이라고 하지마라.
주님의 기도를 진정 자기의 기도로 바치지 않으면서.

2012년 6월 7일 목요일

IU(아이유) & Yoo Seungho - Believe in Love MV



all we need is forever love tonight 이 밤이 가면 늦어버려요 
우리들의 사랑은 아주 커다란 기적을 만들죠
내 앞에선 그대의 두 눈을 바라보면 내 맘은 뜨겁게 타오르죠
난 바래요 세상의 모든 사랑이 가득하길

이 밤 내 귓가에는 들려요 
커다란 사랑이 날 깨우고 있죠 oh love

그댄 왜 아직 모르고 있죠 
멀리서 들리는 울음소릴

그 소리를 제발 외면하지 마요
그 아이들의 눈물이 이야기 하고 있잖아
용기 내요 제발 눈감지 말아요 
모두의 사랑이 필요해요

all we need is forever love tonight 이 밤이 가면 늦어버려요 
우리들의 사랑은 아주 커다란 기적을 만들죠
내 앞에선 그대의 두 눈을 바라보면 내 맘은 뜨겁게 타오르죠
난 바래요 세상의 모든 사랑이 가득하길

난 느낄 수가 있죠.. 맘 깊은 곳에 아직 남아 있는 용기를
당신의 그 마음 가득히 큰 사랑이 넘치고 있어요
귀를 막고... 두 눈을 감아도 (눈을 감아도) 
터져버릴 듯한 사랑이 내 눈에 보여요

all we need is forever love tonight 이 밤이 가면 늦어버려요 
우리들의 사랑은 아주 커다란 기적을 만들죠
내 앞에선 그대의 두 눈을 바라보면.. 내 맘은 뜨겁게 타오르죠
난 바래요... 세상의 모든 사랑이 가득하길

맘을 열고 떨리는 두 손을 잡아줘요..
세상에 무릎 꿇지 않도록... 난 믿어요 세상엔 아직 사랑이 가득 하죠...

2012년 5월 31일 목요일

20120530 남양성모성지&궁평항선착장


성당 동생과 함께 다녀왔습니다. 성지에는 기도 하시는 분들이 많고,
바다에는 파도가 철썩이고, 낚시 하시는 분들이 많네요.
운전하느라 고생한 동생에게 감사의 마음을 전합니다.


남양 성모상.
둥근 돌 하나 하나가 묵주알... 20단 묵주기도의 길 입니다.

2012년 5월 29일 화요일

J Rabbit - 요즘 너 말야 (feat. Yana)



요즘 너 말야 참 고민이 많아 
어떡해야 할지 모르겠나 봐 
언제나 함께하던 너의 노래가 
이제 들리지가 않아
사실 넌 말야 참 웃음이 많아 
누가 걱정하기 전에 툭툭 털고 일어나
해맑은 미소로 날 반겨 줄 거잖아
쉬운 일은 아닐거야 어른이 된다는 건 말야
모두 너와 같은 마음이야 힘을 내보는 거야
다시 너로 돌아가 이렇게 
희망의 노랠 불러 새롭게 
널 기다리는 세상을 기대해봐 
다시 달려가 보는 거야 
힘이 들고 주저 앉고 싶을 땐 이렇게 
기쁨의 노랠 불러 씩씩하게
언젠가 모두 추억이 될 오늘을 
감사해 기억해 힘을내 MY FRIEND 
쉬운 일은 아닐거야 어른이 된다는 건 말야
모두 너와 같은 마음이야 힘을 내보는 거야
다시 너로 돌아가 이렇게 
희망의 노랠 불러 새롭게 
널 기다리는 세상을 기대해봐 
다시 달려가 보는 거야 
힘이 들고 주저 앉고 싶을 땐 이렇게 
기쁨의 노랠 불러 씩씩하게
언젠가 모두 추억이 될 오늘을 
감사해 기억해 힘을내 MY FRIEND 
널 위한 세상을 기대해 
힘이 들고 주저 앉고 싶을 땐 이렇게 
기쁨의 노랠 불러 씩씩하게
언젠가 모두 추억이 될 오늘을 
감사해 기억해 힘을내 MY FRIEND

2012년 5월 28일 월요일

옥상달빛 - 없는게 메리트



없는게 메리트라네 난 
있는게 젊음이라네 난
두 팔을 벌려 세상을 다 껴안고 
난 달려갈꺼야 
나는 가진게 없어 손해 볼게 없다네 난 
정말 괜찮아요 그리 슬프진 않아요 
주머니 속에 용기를 꺼내보고 
오늘도 웃는다 그래
없는게 메리트라네 난 
있는게 젊음이라네 난
두 팔을 벌려 세상을 다 껴안고 
난 달려갈꺼야 
어제 밤도 생각해봤어 
어쩌면 나는 벌써 겁내는거라고 
오늘은 나 눈물을 참고 힘을 내야지
포기하기엔 아직은 나의 젊음이 찬란해
없는게 메리트라네 난 
있는게 젊음이라네 난
두 팔을 벌려 세상을 다 껴안고 
난 달려갈꺼야
난 달려갈꺼야
난 없는게 메리트

성령의 열매


  하느님께서는 교회 공동체에 봉사하게 하는 여러 가지 은사의 사용과 열성만으로 만족하시지 않습니다. 하느님 아버지께서는 그리스도인의 성격과 행실을 변화시켜서 완전한 하느님의 자녀가 되기를 원하십니다(마태 5, 48). 그러므로 우리가 우리 생활 전체를 변화시켜 주시도록 성령을 받아들인다면 성령께서 우리 안에 성령의 열매를 맺어 주실 것이고, 이것이 바로 하느님께 영광을 드리는 것이 됩니다.
  성령께서 주시는 열매는 사랑, 기쁨, 평화, 인내, 친절, 선행, 진실, 온유, 그리고 절제입니다. 이것을 금하는 법은 없습니다(갈라 5, 22-23).
(1) 사랑
  사랑은 가장 기본이 되는 열매이면서도 제일 중요한 것입니다. 하느님의 가장 큰 계명은 하느님과 이웃을 사랑하라는 것입니다. 예수 그리스도께서 말씀하신 사랑은 아가페적인 사랑이며, 이 사랑의 가장 좋은 본보기는 바로 예수 그리스도 자신이십니다. 예수께서는 모든 인간을 위하여 자신의 생명을 바치셨습니다.
  우리가 우리 마음에 맞는 사람들만 사랑한다는 것은 이기주의의 한 형태입니다. 그리스도인들은 이기주의적이 아닌 무조건적인 사랑을 하도록 부름을 받았습니다(마태 5, 43-48). 이런 사랑을 우리 힘만으로 한다면 불가능하겠지만 하느님과 함께라면 모든 것이 가능합니다. 하느님의 사랑이 우리 마음에 부어짐으로써 우리를 하느님의 힘으로 변화시켜 원수까지도 사랑할 수 있도록 하십니다.
(2) 기쁨
  여기서 말하는 기쁨은 좋은 음식, 좋은 옷을 얻었다든가 목적을 달성하여서 오는 외적인 환경에서 생기는 기쁨이 아니라, 특별한 이유도 없이 안에서 솟아나는 내적인 기쁨을 말합니다. 예수 그리스도께서는 당신께서 주시는 기쁨은 세상이 주는 기쁨과 다르다고 말씀하셨습니다(요한 16, 22-24). 이 기쁨은 언제나 행복한 감정에 머무르려고 애쓰는 것이 아닙니다. 그보다도 주님과의 계속적인 친교에서 오는 것으로 우리 마음속에 자리 잡고 있는 깊은 환희인 것입니다. 이것은 어려운 환경에서도 우리에 대한 주님의 사랑을 감지할 수 있는 상태에서 오는 결과인 것입니다. 그래서 사도 바오로는 주님과 함께 항상 기뻐하십시오. 거듭 말합니다. 기뻐하십시오.(필립 4, 4)라고 말씀하셨습니다.
(3) 평화
  성령의 열매로서의 평화는 다투거나 소란스럽거나 바쁘거나 한가롭거나에 관계없이, 어떠한 외적인 환경에도 관계없이 내적인 평화를 누리는 것을 말합니다. 주님의 평화 안에 사는 사람은 일이 잘되거나 잘못되거나 관계없이 항상 모든 일이 서로 작용해서 좋은 결과를 이룬다는 말씀(로마 8, 28)을 깊이 이해하는 사람입니다. 예수께서는 우리가 충만한 당신의 평화를 갖기를 원하시며, 이미 그 평화를 우리에게 주셨습니다(요한 14, 27). 이 충만한 평화란 바로 예수 그리스도 안에 있다는 것을 의미합니다(에페 3, 14-18).
(4) 인내
  인내란 우리가 어려운 상황에 처해 있을 때 체념하여 수동적으로 그 어려움을 받아들인다는 것을 의미하는 것이 아니라, 오히려 적극적으로 고통을 참고 견디어 내는 능력, 기다리는 능력과 일상 생활에서 단조롭고 지루함을 참는 능력도 내포하고 있습니다. 또한 이렇게 견디어 내는 노력을 통한 성장도 포함하고 있습니다. 인내는 결단력을 요구하기도 하며 목적이 달성될 때까지 지속되는 힘이며, 저항이나 고통에 맞서서 포기하지 않는 저력을 뜻합니다. 인내의 열매는 하루아침에 성숙되지 않으며 오랜 시일에 걸쳐서 점차적으로 성숙합니다. 특히 이 열매는 일이 잘될 때보다는 시련과 고통 속에서 맺어지게 됩니다.
(5) 친절
  성령의 열매로서의 친절은 마음속 깊은 곳에서부터 우러나오는 것을 말합니다. 친절은 이웃에 대한 너그러움, 용서, 희생하는 마음을 갖는 것이라고 할 수 있습니다. 이 열매를 맺은 사람은 다른 사람들과 부담감 없이 대화하며, 이런 사람과 같이 있으면 왠지 마음이 편하고, 처음 보더라도 친한 사람처럼 여겨지며 대인 관계도 원만하게 됩니다.
(6) 선행
  하느님 말씀에 따라 하느님께서 원하시고 동의하시는 것을 행하는 것입니다. 선에서 흘러나오는 행동은 순수하며 진정한 것이지, 결코 거칠거나 남에게 상처를 주지 않으며 영예롭고 도덕적이며 고결합니다(필립 4, 8).
(7) 진실
  진실한 사람은 하느님께 믿음을 두고 있으며 하느님 말씀이 자기 마음에 맞건 안 맞건 언제나 순종합니다(창세 12장: 아브라함). 예수 그리스도께서 진실하고 슬기로운 종에 대하여 말씀하셨습니다(루가 12, 42-47). 우리가 하느님 앞에 내세울 것은 진실밖에 없다고 생각됩니다. 진실이란 있는 그대로 어린아이처럼 단순하게 되는 것입니다.
(8) 온유
  '온유하다'는 것은 우리의 힘이 자제되어 있는 것을 뜻합니다. 우리의 분노가 죄악이나 온당치 못한 무자비함으로 빠지지 않음을 뜻합니다. 또 온유한 사람은 화를 내는 일 없이 남의 충고를 사랑으로 받아들이고 하느님의 말씀에는 온순히 따르지만 악에 저항하는 데는 슬기로운 힘을 갖고 있습니다.
(9) 절제
  절제는 우리 안에 계시는 성령의 뜻에 따르려는 능력으로 우리의 감정과 욕망을 지배하는 것입니다. 우리 생활의 많은 영역에서 끊어 버려야 할 욕망들이 있습니다. 그래서 이 욕망에 대항하는 구체적인 결단을 내려야 합니다. 그러나 이것이 언제나 쉬운 일은 아닙니다. 예를 들면, 어떤 사람은 술을 절제하지 못하며, 어떤 이는 도박, 어떤 이는 성적 욕구를 자제할 수 없는 경우가 있습니다. 자신의 의지력이나 결심이 이런 욕망들을 자제하는 데 부족함을 알게 됩니다. 그런 사람에게 필요한 것이 성령의 도움인 것입니다.

2012년 5월 27일 일요일

성령칠은(聖靈七恩)

  성령은 우리가 그리스도의 증인으로서 하느님의 뜻을 따르도록 생명의 은총으로 믿음과 바람과 사랑의 덕을 주실 뿐만 아니라 이를 완성하는 데 필요한 특별한 일곱가지 도움의 은사를 주시는데, 이를 성령칠은(聖靈七恩)이라고 합니다.

  성령칠은에는 슬기(지혜), 통달(지식, 깨달음), 의견, 지식, 굳셈(용기), 효경, 두려워함 등이 있지요. 물론 이러한 은사들이 견진성사 때에만 주어지는 것은 아니고, 세례 때 처음으로 주어지고, 다만 견진성사를 통해 더욱 풍성하고 확고하게 되는 것입니다.
  이들 중 슬기(지혜)와 통달(지식, 깨달음)과 의견과 지식은 우리의 지능을 도와주며, 굳셈(용기)과 효경과 두려워함은 우리 의지를 도와줍니다.

① 슬기(지혜) 
     하느님의 뜻만을 따라 살고 그것에 맛들일 수 있는 슬기로움을 준다.

② 통달(깨달음, 지식) 
     하느님의 진리가 참된 것임을 깨닫게 해 주고 예수님의 가르침을
     잘 알아듣고 이해하게 해 준다.

③ 의견 
     어떤일이 옳고 그른 일인지 더욱 분명하게 구별할 수 있게 해 준다.

④ 지식 
     교리와 성서의 뜻을 잘 알아듣도록 도와준다. 그리고 교리와 성서의 어떤 해설이
     옳은지 그른지 분별하게 한다. 그리고 교리가 일상생활에서 어떻게 관계되는지 알려 주며,
     여러 종교에 대한 옳고 그름을 분별하게 한다.

⑤ 굳셈(용기) 
     굳세지 못한 사람은 싸움에 진다. 우리는 끊임없는 유혹과 싸우고 있다.
     또 어떤 때는 믿음 때문에 사람들로부터 핍박을 받거나 어려움을 당하는 수도 있다.
     굳셈은 이런 모든 어려움을 이겨내게 한다.

⑥ 효경 
     하느님을 무서워하기보다는 참 아버지로 알아 사랑하여 친밀감을 갖고,
     하느님의 뜻을 채워 드리려고 힘쓰고, 어려운 때에는 자녀들이 부모를 신뢰하는 것처럼
     언제나 하느님을 따르며 의지하게 한다.

⑦ 두려워함(경외심) 
     단순히 공포심을 가지고 무서워하는 것이 아니라 효성 있는 자녀들이
     부모의 마음을 아프게 하지는 않을까 조심하듯, 범죄하여 하느님의 마음을 아프지 않도록 하고,
     우리 영혼이 해를 받지 않도록 우리를 조심하게 해준다.

출처 : http://www.s-maria.or.kr/maria/missa06/1191

2012년 5월 26일 토요일

2012-05-19 유희열의 청춘나이트

쿨(이재훈.김성수)+su-zi



양파 - 애송이의 사랑(1996)



김종국+하하 - 회상(1997)+검은고양이(1995)



김종국+하하 - 트위스트 킹(1996)



디바 by시크릿 - 왜불러(1998)

2012년 5월 22일 화요일

평온을 비는 기도(Serenity Prayer)

라인홀트 니버(Karl Paul Reinhold Niebuhr)

God, give us grace to accept with serenity the things that cannot be changed,
courage to change the things that should be changed, 
and the wisdom to distinguish the one from the other.


주여, 우리에게 우리가 바꿀 수 없는 것을 평온하게 받아들이는 은혜와
바꿔야 할 것을 바꿀 수 있는 용기, 
그리고 이 둘을 분별하는 지혜를 허락하소서.