일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 마인크래프트
- 배열 정렬
- 안드로이드 백도어
- 알고리즘
- 구조체 함수
- abex crack me 1번
- 리버싱
- 리틀엔디언
- abex crack me 2번 문제풀이
- UDP daytime
- 암호화폐
- 빅엔디언
- C언어
- Reverse Me
- 1.9.2
- c언어 알고리즘
- 덧셈
- abex crack me 5번문제
- 오버워치
- 배열
- 배열 탐색
- 레나 리버싱
- 메이플스토리 M 사전예약
- 프로그래밍 언어론
- 프론트엔드 개발자
- 재밌는 모바일게임
- 구조체
- sa 계정 비밀번호 변경
- 네트워크 관리사 2급 필기
- react native
Archives
- Today
- Total
Gyejoong's Information
[백준알고리즘] 2750번 : 수 정렬하기 본문
반응형
자료구조는 배열과 ArrayList를 이용하였고,
알고리즘은 버블 정렬, 퀵 정렬로 문제 풀이를 하였습니다.
1. 버블 정렬
1.1) 배열을 이용한 버블 정렬
- 우선 배열의 경우 정적으로 크기를 지정해줘야 합니다. 이 문제에서는 수의 개수가 주어지기 때문에 수의 개수만큼 배열의 크기를 지정하였습니다.
- 버블정렬은 정렬할 수의 크기의 -1만큼 회전하기 때문에 배열의 크기를 이용하여 이중루프를 사용했습니다.
1.2) ArrayList를 이용한 버블 정렬
- ArrayList의 경우 크기를 지정하지 않아도 데이터가 추가·삭제될 때마다 자동으로 크기가 할당되기 때문에 따로 크기를 지정할 필요가 없었습니다.
2. 퀵 정렬
2.1) 배열을 이용한 퀵 정렬
- 퀵 정렬의 핵심 개념은 분할 정복(divide and conquer)과 순환(recursion)입니다.
- 우선 피벗을 정렬할 수의 가운데 값으로 지정해 주었습니다. 피벗을 기준으로 분할하여 리스트를 나눈 뒤, 재귀호출하여
정렬하는 방법입니다.
2.2) ArrayList를 이용한 퀵 정렬
- ArrayList의 경우는 배열과 크게 다르지 않습니다. 다만, 고정된 크기가 아니기 때문에 add를 하는 순간 크기도 그만큼 커지므로 추가된 인덱스에 +1 만큼에 위치한 값을 삭제해 주었습니다.
반응형
'Study > 알고리즘' 카테고리의 다른 글
[구글입사문제] 1부터 10000까지 8의 개수 구하기 (0) | 2017.11.02 |
---|---|
[백준알고리즘] 4673번 : 셀프넘버 (0) | 2017.11.01 |
Comments