1.
2.
1.
I. 알고리즘 : 버블 정렬
1. 강의 노트
강의노트
1.
특징 : 비교적 쉬움
•
뒤로 가는 구간이 적다 = 왔다갔다를 덜 한다
•
insertion sort는 진행 방향이 뒤로 가는 구간이 있어서 bubble sort보다 까다로움
•
가장 직관적이지만 가장 효율이 좋지 않은 방법이기도 하다
2.
칠판코딩 가능한 수준까지 반복하자
3.
처음 알고리즘을 풀 때는 표를 그려서 하는 게 좋다
4.
문제를 풀기 위해 알아야 할 것
•
swap : temp 변수 만들어서 바꿔치기
•
중첩 for문
•
중첩 for문 컨트롤
코드 1 : 가장 작은 수를 0번째 자리에 놓기
코드 2 : i를 파라미터로 넘겨보기 + 반복하기
코드 3 : 이중 for문
2. 버블 정렬 알아보기
1.
정의 및 특징
•
(다른 알고리즘을 사용하지 않는) 가장 간단한 정렬 알고리즘이다.
•
인접한 원소들을 비교해서 순서가 맞지 않으면 위치를 바꾸는 과정을 반복한다.
•
큰 데이터셋에는 사용하기 어렵다. 평균, 그리고 최악의 경우 시간 복잡도가 꽤 높기 때문.
•
과정을 나타낸 표
2.
버블 정렬 최적화하기
•
배열이 정렬되어 있어도 반복문을 돌기 때문에 시간 복잡도는 항상 O(N^2)
•
이중 for문에서 안쪽 반복문이 더 이상 값을 교환하지 않을 때 알고리즘을 멈추는 방법이 있다.
코드 예제
3.
최악의 경우
•
전체 배열이 내림차순 정렬되어 있는 경우
•
배열 원소의 자리를 바꾸는 수 = 배열 원소의 자리를 비교하는 수 = N(N-1)/2
4.
복잡도 정리
•
최악(+평균)의 경우 시간 복잡도 : O(N^2) - 내림차순 정렬
•
최고의 경우 시간 복잡도 : O(N) - 오름차순 정렬
•
공간 복잡도 : O(1)
5.
주 사용처
•
컴퓨터 그래픽 분야. 거의 정렬된 배열에서 자잘한 에러를 감지해서 수정하는 기능
재귀적으로 푸는 방법도 있다.
cf. 선택 정렬
참고. 제자리 알고리즘
II. 실습 : 파일 불러와서 DB에 넣기
1. Gradle로 Test case 빌드하기
Gradle Build한 이유
•
테스트 케이스를 작성하고 실행하기 좋아서
참고 용어
GRADLE 설치 및 오류해결 과정
실습
인코딩 오류 해결법
2.
SQL 데이터 JAVA로 읽어오기
정리필요. . .복습하고 다시 정리할게요ㅠㅠ 죄송해요
III. 추가
1. 빌드 툴에 대해
1.
빌드 관리 도구
빌드 자동화를 수행해 실행 가능한 프로그램으로 바꿔주는 도구
•
빌드 참고
◦
개발 소스 코드를 실행할 수 있는 소프트웨어의 단위로 변환하는 과정
◦
코드를 컴파일해 binary code로 만들고, 패키징하고 코드를 테스트해 실행 가능한 프로그램이 나오기까지의 과정
•
패키징 ⇒ 소프트웨어 패키징
◦
개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징하고 설치와 사용에 필요한 환경 및 절차 등 전체 내용을 포괄하는 매뉴얼을 작성하는 것
▪
매뉴얼 : 사용자 중심으로 기술한 기능 및 방법을 나타낸 안내서. 제품 소프트웨어에 대한 패치 개발과 업그레이드를 위해 버전 관리도 수행
◦
소프트웨어 모듈화를 이해하고 빌드하는 기법을 통해 패키징을 성공적으로 수행 가능
▪
모듈 : 소프트웨어 설계에서 기능 단위로 분해하고 재사용과 공유가 가능한 수준으로 만들어진 단위
▪
모듈화 : 소프트웨어의 성능을 향상하고 시스템의 디버깅, 통합 등을 용이하도록 하는 설계 기법
2.
Maven, Gradle
대표적인 Java용 빌드 툴
a.
Maven
•
Apache Ant의 대안으로 만들어짐
•
xml 스크립트 사용
2. Gradle
•
오픈소스 기반의 build 자동화 시스템
•
JVM 기반의 빌드 도구. 기존의 Ant와 Maven 보완
3.
해봐야 하는 거
•
프로젝트 다시 만들어보기. . .
•
로직, 입출력 자체를 컴퓨터에게 맞는 방식으로 해야 할 것 같은데 그게 뭔지 모르겠다