목록sort (3)
꿈 많은 사람의 이야기
퀵 정렬(quick sort)에 대해서 많이 들어보셨을 겁니다. 정렬에는 삽입 정렬(insertion sort), 선택 정렬(selection sort) 등이 있는데요. 퀵 정렬은 이러한 정렬 알고리즘보다 훨씬 빠른 속도로 정렬을 해주는 알고리즘입니다. 퀵 정렬은 분할 정복(divide and conquer) 방법을 사용하는 알고리즘 중 하나입니다 분할 정복 문제를 작은 2개로 분리하고 각각 해결한 다음 이를 합쳐서 원래의 문제를 해결하는 방법입니다. 보통 재귀 호출 등으로 사용하게 됩니다 퀵 정렬 과정 퀵 정렬을 위와 같은 과정을 통해 정렬이 진행됩니다. 1. 리스트 안에 한 요소를 선택합니다. 이를 pivot(피벗)이라고 합니다. 2. pivot을 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽으로 분리시..
파이썬으로 알고리즘, 자료구조 공부하기! 이번에는 삽입 정렬, 선택 정렬이다 정렬 알고리즘에서 많이 나오는 것들이 버블 정렬, 삽입 정렬, 선택 정렬 등이 있는데 당분간 이 정렬에 대해서 공부하고 정리하려고 한다! 먼저 선택 정렬(selection sort)이다 선택 정렬은 위 그림을 보면 이해가 편하다 매 step으로 나뉘어 진행하는데 첫 번째에 스탭을 돌면 가장 작은 값이 맨 처음으로 온다. 그리고 첫 번째 값을 fixed 시켜놓고 2번째 값 부터 시작하고 또 다시 비교한다. 그렇기 때문에 비교는 N * (N-1)만큼 비교를 하게 된다. 하지만 교환 횟수는 N - 1 정도이다 파이썬으로 코드를 구현해보자 이렇게 간단한 하나의 함수로 만들 수 있다. 2개의 for문을 돈다. N * (N -1)이므로 그..
펄 배열 2번째 이야기를 시작합니다. 몇몇 특징과, push, pop에 대해서 볼까해요! 먼저 아래와 같은 특징이 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @who = (qw(fred array soojin lee))[2,3]; #이런식으로 잘라서 넣을 수도 있다. print($who[0].", ".$who[1]."\n "); @fred = (7,8,9); @barney = (2,1,0); @backfred = @fred[@barney]; #barney가 2,1,0 이니까 $fred[2] 와 같은 값이 들어간다. -> 슬라이스로 들어가게됨 #@fred[2,1,0] 또는 ($fred[2], $fred[1], $fred[0]), 또는 (9,8,7) 과 동일하다. for($i = ..