일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 포매터
- 비기능적 요구사항
- 토비의 스프링
- jpa lazy
- 소프트웨어의 품격
- spring formatter
- java predicate
- ioc컨테이너
- open-session-in-view
- method refetence
- 스프링
- 도커 이미지 빌드
- 그래프큐엘
- 동적파라미터
- 자바 필터
- 스프링시큐리티
- kotlin ::
- Spring
- 스프링부트 도커
- 정적팩토리메서드
- fetch join
- 기능적 요구사항
- 생성자주입
- 스프링 시큐리티 설정
- IOC
- jpa no session
- kotlin 리팩터링
- 수정자주입
- Atomicity
- 스프링di
Archives
- Today
- Total
공부기록
기본적인 정렬(선택정렬, 버블정렬, 삽입정렬) 본문
반응형
기본적인 정렬(선택정렬, 버블정렬, 삽입정렬)
선택정렬
- 가장 큰 값을 찾는다.
- 맨 마지막 자리의 값과 자리를 바꾼다
- 가장 큰 값이 마지막에 위치한다.
selectionSort(A[], n) { -> 배열 A[1...n]을 정렬한다.
for last <- n downto 2 { ----- 1
A[1...last] 중 가장 큰 수 A[k]를 찾는다; ---2
A[k] <-> A[last]; -> A[k]와 A[last]의 값을 교환 ---3
}
1의 for 루프는 n-1 번 반복.
2에서 가장 큰 수를 찾기 위한 비교횟수 : n-1, n-2, ... , 2, 1 (last개 최대값 last-1)
3의 교환은 상수시간 작업
-> 시간 복잡도 T(n) = (n-1)+(n-2)+...+2+1 = O(n^2)
버블소트
- 첫번쨰 값과 다음 인덱스의 값을 비교해 첫번째 값이 크면 스왑.
- 두번째 값과 다음 인덱스의 값을 비교해 두번쨰 값이 크면 스왑.
... 가장 큰 값이 마지막에 위치 - 가장 마지막에 위치한 값을 제외하고 1,2번 반복
bubbleSort(A[], n) { -> 배열 A[1...n]을 정렬한다.
for last <- n downto 2 { ----- 1
for i <- 1 to last-1 ---2
if(A[i]>A[i+1]) then A[i] <-> A[i+1]; -> 교환 --- 3
}
1의 for 루프는 n-1 번 반복.
2의 for 루프는 각각 n-1, n-2, ... , 2, 1번 반복
3의 교환은 상수시간 작업
-> 시간 복잡도 T(n) = (n-1)+(n-2)+...+2+1 = O(n^2)
삽입정렬
- k-1 개의 데이터가 이미 정렬돼있다.
- k번쨰 데이터를 1번 문제에 끼워넣어 정렬한다
- 결론적으로 k개의 데이터가 정렬된다
- 반복
자세하게
- {2,3,5,6,7,8,4,1} -> 4를 정렬할 차례.
- 4를 temp 변수에 복사한다.
- 4의 바로 앞 인덱스에 위치한 8과 비교한다.
- 8 > 4 이니 8을 뒤로 shift한다. {2,3,5,6, ,8,1}
- 다음으로는 6과 4를 비교한다
- 6 > 4 이니 6을 뒤로 shift한다. {2,3,5, , 6,8,1}
- 반복
결과적으로 {2,3,4,5,6,8,1} 이 된다.
insertionSort(A[], n] { -> 배열 A[1...n]을 정렬한다.
for i <- 2 to n ---- 1
A[1...i]의 적당한 자리에 A[i]를 삽입한다. ---- 2
}
1의 for 루프는 n-1번 반복
2의 삽입은 i-1번 비교
-> 시간 복잡도 T(n) = (n-1)+(n-2)+...+2+1 = O(n^2) (최악의 경우)
반응형
'Computer Science > 자료구조' 카테고리의 다른 글
[HashTable] JAVA로 간단히 구현해보며 HashTable을 알아보자! (1) | 2020.06.27 |
---|---|
[자료구조] 스택 (0) | 2020.05.22 |
합병정렬 (0) | 2020.01.12 |
ArrayList의 add(T t)와 addAll(Collection<? extends T> collection)을 구현해보자. (0) | 2019.10.09 |
[한국방송통신대학교 자료구조] 1강 자료구조란? (0) | 2019.10.08 |