알고리즘

· 알고리즘
[최댓값] 자료구조에서 가장 큰 값을 찾는다. 자료의 0번째 인덱스 값을 max라 두고, for문을 돌려 값을 비교해가며 실제 max를 찾습니다. class MaxAlgo: def __init__(self,datas): self.datas = datas self.max_value = 0 def get_max_value(self): self.max_value = self.datas[0] for i in self.datas: if self.max_value < i : self.max_value = i return self.max_value mylist = [11, 8, 76, 75, 10, 72, 68, 93, 35, 41, 64, 42, 30, 29, 65, 48, 56, 76, 29, 66] maxalg..
· 알고리즘
[Selection Sort] 주어진 리스트 중에 최솟값을 찾아, 그 값 맨 앞에 위치한 값과 교체하는 방식으로 자료를 정리하는 알고리즘 매번 가장 작은 것을 선택한다 라는 의미에서 선택정렬 알고리즘이라고 한다. N-1 만큼 최솟값을 찾아 맨 앞으로 보내야 한다. 따라서 연산 횟수는 \( N + (N-1) + (N-2) +(N-3) + ... + 2 = (N-1)(N+2)/2 = O(N^2) \) 과정 ) 가장 작은 숫자인 1을 가장 앞에 있는 숫자인 4와 자리를 바꾸고, 그다음 가장 작은 숫자인 2는 정렬이 잘 되어 있고, 그다음 작은 숫자인 3을 3번째 위치에 있는 5와 바꾸고... def select_sort(datas): for i in range(len(datas)-1): min_index = ..
· 알고리즘
[삽입 정렬] 정렬되어 있는 자료 배열과 비교해서, 정렬 위치를 찾는다. 버블 정렬은 큰숫자를 뒤로 밀어내며 정렬하는 반면, 삽입 정렬은 정렬이 이미 되어있는 앞부분과 나 자신을 비교해서, 나 자신이 어디에 삽입되면 되는지를 찾는다. 데이터가 거의 정렬되어있다면 매우 효율적인 알고리즘이다. 정렬되어 있는 배열과 비교할 때도, 자기보다 작은 데이터를 만나면 그 위치에서 멈추면 되므로 모든 데이터를 다 볼 필요가 없다. 시간 복잡도는 \( O(N^2) \) 이며, 최선의 경우 \( O(N) \) 을 갖는다. 빨간 박스는 이미 정렬되어 있는 부분을 말한다. 1. 처음에는 자료에서 두 번째 요소를 가지고 이전 데이터와 비교를 시작하며 빨간색 박스를 찾는다. 2. 정렬되어있지 않은 값을 하나하나 정렬된 배열(빨간..
· 알고리즘
[버블정렬] 처음부터 끝까지 인접하는 인덱스의 값을 순차적으로 비교하면서 큰 숫자를 가장 끝으로 옮기는 알고리즘이다. 1. 다음과 같은 리스트가 있다고 하자. [ 10, 2, 7, 21, 0 ] 2. 10과 2를 비교하여, 10이 더 크므로 자리를 바꾼다. [ 2, 10, 7, 21, 0 ] 3. 10과 7를 비교하여, 10이 더 크므로 자리를 바꾼다. [ 2, 7, 10, 21, 0 ] 4. 10과 21을 비교하여, 21이 더 크므로 자리를 바꾸지 않고 이제 21과 0을 비교하여 자리를 옮긴다. [ 2, 7, 10, 0, 21 ] 5. 다시 앞에서부터 2와 7을 비교한다... 5. 다음이 한 사이클이다. 이를 리스트의 요소 갯수만큼 반복하면 모든 값들이 정렬 되어있을 것이다. 6. 단, 다음 사이클을 ..
scone
'알고리즘' 카테고리의 글 목록 (5 Page)