알고리즘/정렬
-
삽입정렬 python insertionSort (배열, 링크드리스트로 구현)알고리즘/정렬 2022. 11. 29. 20:14
삽입정렬 삽입정렬은 인덱스를 하나씩 이동하며, 이미 정렬된 이전인덱스들과 비교하여 값을 교환하는 방식이다 그림에서 볼 수 있듯이 이미 정렬된 값들이 새로운 인덱스보다 큰 경우가 많으면 교환을 많이 해야 하지만! 운이 좋아서 새로운 인덱스의 값이 이미 정렬된 값들의 최댓값보다 크면 과정을 한번 건너뛸 수 있다! 그래서 시간복잡도를 보면 빅오는 O(n^2) 이지만 빅오메가는 Ω(n)인 복불복 정렬 알고리즘이다 배열로 삽입정렬 구현 def sortInsertionInArray(array): temp = None for i in range(len(array)): for j in range(i): if array[i-j] < array[i-j-1]: temp = array[i-j] array[i-j] = arra..
-
선택정렬 python selctionSort (배열, 링크드리스트로 구현)알고리즘/정렬 2022. 11. 29. 19:00
선택정렬 선택정렬은 배열 중 최소값을 찾아 첫번째 인덱스의 값과 교환하고, 그다음은 배열의 첫번째 인덱스를 제외한 값들 중 최소값을 찾아 두번째 인덱스의 값과 교환하고.. 이것을 반복하여 정렬하는 방법이다! 시간복잡도는 O(n^2) 배열로 선택정렬 구현 def sortSelectionInArray(array): min = None minIdx = None temp = None for i in range(len(array)): min = array[i] minIdx = i for j in range(len(array)-i): if min > array[j+i]: min = array[j+i] minIdx = j+i temp = array[i] array[i] = min array[minIdx] = temp..
-
버블정렬 python bubbleSort ( 배열, 링크드리스트로 구현)알고리즘/정렬 2022. 11. 25. 16:23
오늘은 사실 공부를 거의 안했다... 그냥 뭔가 집중도 안되고 하기싫었따 그래도 아예 안할 수는 없어서 버블정렬만 간단하게 정리해봄..! 버블정렬 버블정렬은 인덱스를 하나씩 이동하며 두 값을 비교하여 교환하고, 최댓값을 배열의 끝으로 밀어내는 정렬이다 한번 끝까지 갔으면 가장 큰 값이 맨 끝에 있으므로, 맨끝(최대 길이-1) 전까지 다시 처음부터 시행. 그다음은 최대길이-2 전까지 처음부터 시행. 버블정렬은 간단하지만 정렬 알고리즘중 최악의 효율을 보인다 정렬알고리즘 중에서 시간복잡도가 가장 높음! 시간복잡도는 O(n^2) 배열로 버블정렬 구현 def sortBubbleInArray(array): for i in range(len(array)-1): for j in range(len(array)-1-i)..