[주제]- 기수 정렬에 대한 개념 [정의]- 기수(Radix)란 '주어진 데이터를 구성하는 기본 요소'를 말함 ※ 예) 2진수의 기수: 0, 1, 10진수의 기수: 0 ~ 9 1. LSD(Least Significant Digit) 방식의 정렬- '가장 작은 자릿수'부터 정렬을 진행 ※ 가장 오른쪽부터(숫자로 치면 1의 자리수부터) - 가장 작은 자릿수부터 가장 큰 자릿수까지 비교해야 된다는 단점이 존재하지만, 코드 구현은 MSD에 비해 간결 2. MSD(Most Significant Digit) 방식의 정렬- '가장 큰 자릿수'부터 정렬을 진행 ※ 가장 왼쪽부터 - 코드 구현은 LSD에 비해 추가 작업(정렬 상태 확인)이 필요하지만, 중간에 정렬이 완료될 수 있는 장점이 존재 [중요]- 기수 정렬은 정..
[주제]- 퀵 정렬에 대한 개념과 구현 [중요]- 피벗의 시작 위치는 '맨 왼쪽 or 중간 or 맨 오른쪽'이 될 수 있음- 좀 더 효율적이기 위해 처음:중간:마지막 숫자끼리 비교해서 중간 값을 피벗으로 설정하는 것이 효율적임 또는, 맨 왼쪽(오른쪽) 3개 숫자를 비교- 피벗을 중심으로 영역을 두 개로 분할하여 정렬 ※ 재귀 ■ 그림(퀵 정렬 과정)- 숫자 '5, 7, 4, 2, 1, 8, 3, 6'을 오름차순으로 정렬 - 맨 왼쪽 숫자를 피벗으로 결정- 비교 숫자(low)는 피벗 숫자의 오른쪽부터 시작 - 'low'는 해당 위치의 숫자가 피벗 위치의 숫자보다 높을 때까지 오른쪽으로 이동- 'high'는 해당 위치의 숫자가 피벗 위치의 숫자보다 낮을 때까지 왼쪽으로 이동 ※ 'low'의 이동이 끝나야 '..
[주제]- 병합 정렬에 대한 개념과 구현 [중요]- 정렬의 과정 => 1단계: 복합(Divide) → 2단계: 정복(Conquer) → 3단계: 결합(Combine)- 정렬할 배열을 중간을 기준으로 2개로 나눠서 따로 정렬- 1:1로 비교될 때까지 분할- 다시 거꾸로 숫자를 비교해가면서 정렬 ※ 재귀 ■ 그림(병합 정렬 과정)- 숫자 '5, 7, 4, 2, 1, 8, 3, 6'을 오름차순으로 정렬 [소스]■ Merge.javapackage sortMerge; public class Merge { public Merge() {} ///// 분할된 숫자들을 병합 public void MergeTwoArea(int arr[], int left, int mid, int right) { int fIdx = lef..
[주제]- 정렬 알고리즘 종류 중 선택 정렬에 대한 개념과 구현 [중요]- 첫 번째 위치에 있는 숫자는 정렬된 상태로 간주 ※ 자신보다 앞에 비교할 대상이 없기 때문 - 자신보다 앞에 위치한 숫자랑 비교해가면서 배치(정렬)을 같이 진행 ■ 그림(삽입 정렬 과정)- 숫자 '2, 4, 3, 1'을 오름차순으로 정렬 - 두 번째 위치의 숫자를 임시 공간에 저장- 임시 공간의 숫자와 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 높으므로 앞에 위치한 숫자 뒤에 배치 - 다음 위치의 숫자를 임시 공간에 저장- 임시 공간의 숫자와 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 낮으므로 앞에 위치한 숫자는 뒤로 이동 - 다시 임시 공간의 숫자와 더 앞에 위치한 숫자와 비교- 임시 공간의 숫자가 더 높으므로 앞..
[주제]- 정렬 알고리즘 종류 중 선택 정렬에 대한 개념과 구현 [중요]- 모든 비교를 끝낸 뒤 맨 왼쪽으로 이동- 이동된 숫자는 정렬이 완료된 상태이기 때문에 다음 정렬된 숫자는 완료된 숫자 다음의 위치로 이동됨 ■ 그림(선택 정렬 과정)- 숫자 '3, 4, 2, 1'을 오름차순으로 정렬 - 전체 값 중에 가장 작은 숫자를 찾을 때까지 비교- 찾은 값의 위치와 맨 왼쪽 위치와 교체 - 정렬된 숫자를 제외하고 남은 숫자 중 작은 값을 찾을 때까지 비교- 찾은 값의 위치를 정렬 완료된 숫자의 오른쪽 위치에 있던 숫자와 교체 - 위와 같음 ■ 실행결과 [첨부 파일]
[주제]- 정렬 알고리즘 종류 중 버블 정렬에 대한 개념과 구현 [중요]- 오름차순 정렬 시(내림차순 정렬 시) 가장 큰(작은) 값을 오른쪽으로 이동- 마지막 숫자는 정렬이 완료된 상태기 때문에 더 이상 정렬 진행하지 않음 ※ 전체 길이의 '-1'한 만큼 정렬 진행 ■ 그림(버블 정렬 과정)- 숫자 '4, 2, 1, 3'을 오름차순으로 정렬 - 첫 번째 숫자와 두 번째 숫자 비교- 첫 번째 숫자가 더 높으니 위치 교체 - 두 번째 숫자와 세 번째 숫자 비교- 두 번째 숫자가 더 높으니 위치 교체 - 세 번째 숫자와 네 번째 숫자 비교- 세 번째 숫자가 더 높으니 위치 교체 - 1회전 정렬 종료- 다시 처음부터 반복 [소스]■ BubbleSort.javapackage sortBubble; public cl..
[주제]- 정렬 작업을 세 개의 영역으로 나눠서 메소드로 만들기 [중요]- 값을 저장하는 공간(배열 num)은 'input' 메소드 안에서 생성 및 초기화 작업이 이뤄짐- 반복되는 값 교체 과정은 두 번을 동일하게 사용하기 때문에 'swap' 메소드로 만듦 [소스 코딩]package sortMethod; import java.util.Scanner; class sortMethod { public static void main(String[] args) { // 정렬 값 초기화 및 입력 int updown[] = new int[1]; int num[] = input(updown); // 정렬 루프 sorting(num, updown[0]); // 결과 출력 sortPrint(num); } public st..
[주제]- 정렬 방식 중 버블정렬 구현 [중요]- 'temp' 변수를 사용하여 두 개의 변수 값을 서로 교환하기 [소스 코딩]package sortingClass; import java.util.Scanner; class sortingClass { public static void main(String[] args) {/* sorting(정렬) 버블 정렬 구현*/ Scanner scan = new Scanner(System.in); int num[]; int count, updown, temp; count = updown = temp = 0; // 정렬할 개수를 입력 System.out.print("정렬할 개수 입력: "); count = scan.nextInt(); // 입력된 개수만큼 동적할당 num..
- Total
- Today
- Yesterday
- 응용
- SWT
- VCL
- SysUtils
- 자료구조
- System
- Pte
- RA
- 말하기
- 독해
- ADODB
- 설명
- Delphi
- 상황
- 문법
- 교육센터
- 일기
- 알고리즘
- 정렬
- 대상
- wfd
- 여행영어 100일의 기적
- 계산기
- tdataset
- 작문
- java
- Reference
- 왕초보 영어회화 100일의 기적
- 영어
- 스택
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |