자료구조_알고리즘
-
[파이썬] 소수의 개수(에라토스테너스 체)자료구조_알고리즘/알고리즘 2020. 9. 7. 12:31
에라토스테네스의 체란? 소수를 판별하는 알고리즘이다. 소수들을 대량으로 빠르고 정확하게 구하는 방법이다. 단일 숫자 소수 여부 확인 어떤 수의 소수의 여부를 확인 할 때는, 특정한 숫자의 제곱근 까지만 약수의 여부를 검증하면 O(N^1/2)의 시간 복잡도로 빠르게 구할 수 있다. 수가 수(N이라고 가정)를 나누면 몫이 생기는데, 몫과 나누는 수 둘 중 하나는 N 제곱근 이하이기 때문이다. 만약, 대량의 소수를 한꺼번에 판별해야할 경우는 '에라토스테네스의 체'를 이용한다. 에라토스테네스의 체 원리 에라토스테네스의 체는 가장 먼저 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에 하나씩 지워나가는 방법을 이용한다. 배열을 생성하여 초기화한다. 2부터 시작해서 특정 수의 배수에 해당하는..
-
[정렬] 삽입정렬 - 파이썬자료구조_알고리즘/자료구조 2020. 8. 19. 23:14
a = [5,9,3,4,8,10] def insertSort(unsorted_list): length = len(unsorted_list) for i in range(length): end = i while end > 0 and unsorted_list[end-1] > unsorted_list[end]: unsorted_list[end-1], unsorted_list[end] = unsorted_list[end], unsorted_list[end-1] end -=1 print(a) insertSort(a) print(a) 삽입 정렬은 한마디로 표현하면 정렬 범위를 1칸씩 확장해나가면서 새롭게 정렬 범위에 들어온 값을 기존 값들과 비교하여 알맞은 자리에 꼽아주는 알고리즘입니다. 그렇기 때문에 end값부터 ..
-
[정렬] 선택정렬 -파이썬자료구조_알고리즘/자료구조 2020. 8. 18. 12:49
''' 선택정렬 ''' a =[3,9,6,5,2,10] def selectedSort(unsorted_list): length = len(unsorted_list) for i in range(length): min_index = i for j in range(i+1 ,length): if(unsorted_list[j] < unsorted_list[min_index]): min_index = j unsorted_list[i], unsorted_list[min_index] = unsorted_list[min_index], unsorted_list[i] print(a) selectedSort(a) print(a) 오름차순 선택정렬은 최소값을 갖는 index를 찾는 방식으로 구현한다. 버블 정렬과 마찬가지로 구..
-
[정렬] 버블소트 - 파이썬자료구조_알고리즘/자료구조 2020. 8. 17. 22:49
버블 소트 - 파이썬 자료구조 관련 내용은 인터넷에서 검색하면 자료가 많이 나오기 때문에 따로 정리하진 않았다. a =[ 5, 3 , 6, 9, 2] list_length = len(a) for i in range(list_length -1): for j in range(list_length - i -1): if(a[j] >a[j+1]): a[j], a[j+1] = a[j+1], a[j] print(a) 버블 소트를 구현할 때 가장 중요한 것은 range의 범위를 설정하는 것이다. 실제 코딩테스트에서 버블소트 구현이 나올 확률은 없지만, 가장 기본이 되는 sorting 방법이기 때문에 주의해야 한다. 두번째 for문에서 list_length - i - 1 로 range 범위를 설정하는 이유는 뒤쪽 부터 ..