10주차
기말에 힙, 퀵, avl 59, 78, 65, 23, 7, 25, 52, 49, 99, 80 10개를 순차적으로 넣을 때 avl 트리 만드는 과정 • DFS 인접 리스트를 이용한 dfs 탐색 adj_list = [[2, 1], [3, 0], [3, 0], [9, 8, 2, 1], [5], [7, 6, 4], [7, 5], [6, 5], [3], [3]] n = len(adj_list) visited = [0] * n def dfs(v): visited[v] = 1 print(v,' ', end = ' ') for i in adj_list[v]: if visited[i] == 0: dfs(i) print("dfs") for i in range(n): if visited[i] == 0: dfs(i) 0~9 ..
2023. 11. 10.
컴알 시험대비
1. 삽입정렬 알고리즘 코드 빈칸문제로 나온다 while 루프 버전 def insertion_sort(a) : n = len(a) for i in range(1,n): j = i -1; key = a[i] while j >= 0 and a[j] > key : a[j+1] = a[j] j -= 1 a[j+1] = key for 루프 버전 def insertion_sort(a) : n = len(a) for i in range(1,n): for j in range(i,0,-1): if a[j-1] > a[j]: a[j-1], a[j] = a[j], a[j-1] 쉘 정렬 4,2,7,1,9 리스트를 나눌 간격인 갭은 전체 리스트 길이 5 // 2 +1인 3으로 시작한다 {4,1}, {2,9}의 부분 리스트를 부..
2023. 10. 27.
컴알 시험
1220 자료구조 객관식, 알고리즘 주관식 시험문제 알고리즘 수행시간 비교 안나옴 빅오는 안봐도 될듯 알고리즘 이론, 빈칸채우기, 쉘,퀵,힙 정렬 = gap and a[ j] < a[ j-gap]: #삽입 위치를 찾음 a[ j], a[ j-gap] = a[ j-gap], a[ j] #항목 이동 j -= gap print(' Gap =', gap, a) gap = gap//2 data = [5, 3, 8, 4, 9, 1, 6, 2, 7] print("Original :", data) shell_sort(data) print(" Shell :", data) 힙정렬 (파이썬의 힙은 최소힙이다) 힙정렬은 이진힙을 이용해서 하는 정렬이다 완전이진트리 : 모든 레벨의 노드가 채워져있고 마지막 레벨은 왼쪽부터 차있어..
2023. 10. 20.
3주차
문자열 포맷팅 - f스트링 쉘정렬 간격을 나눠서 부분적으로 삽입 정렬, 간격을 홀수로 해 주고 정렬한다 def shell_sort(a) : n = len(a) gap = n // 2 while gap >= 1 : if (gap % 2) == 0 : gap += 1 for i in range(gap, n) : j=i while j >= gap and a[ j] < a[ j-gap]: #삽입 위치를 찾음 a[ j], a[ j-gap] = a[ j-gap], a[ j] #항목 이동 j -= gap # print(' Gap=', gap, a) gap = gap//2 a = [5, 3, 8, 4, 9, 1, 6, 2, 7] print("Original :", a) shell_sort(a) print("Shell ..
2023. 9. 15.
재귀, 정렬 알고리즘
하노이탑 def hanoi(n,fr,tmp,to): if n == 1: print("원반 1을 %s에서 %s로" %(fr, to)) else: #n-1개를 시작점에서 임시 지점으로 옮기기 hanoi(n-1,fr,to,tmp) #남은 1개를 목적지로 print("원판 %d를 %s에서 %s로"%(n,fr,to)) #임시 지점에 있는 n-1개를 목적지로 hanoi(n-1,tmp,fr,to) hanoi(4, 'A', 'B', 'C') 거듭제곱 def pow(x,n): if n == 0 : return 1; elif n % 2 == 0: return pow(x*x, n//2) else: return x*pow(x*x, (n-1)//2) print(pow(2,4)) print(pow(2,5)) 피보나치 순환 def..
2023. 9. 8.