<1~4교시 자바>
정렬
<h4>버블정렬 연습</h4>
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
32
33
34
|
public void method01() {
/*
- 정렬 ==> 데이터를 크기순으로 차례로 나열하는 것(오름/내림차순 정렬)
- 오름차순 기준
1) 버블정렬 : 바로 앞 뒤의 데이터를 비교해서 제일 큰 수를 뒤로 보내는 방식
2) 선택정렬 : 제일 작은 데이터를 찾아서 앞으로 보내는 방식
(정렬할 데이터가 N개이면 반복횟수는 N-1회 반복한다.)
*/
// 버블정렬 연습
// int[] nums = {7,5,3,8,2};
int[] nums = {7,2,3,8,5}; //경우에 따라서는 작업이 끝났는데도 계속 반복되 비효율적일 수 있음
System.out.println("정렬하기 전: " + Arrays.toString(nums));
for(int i=0; i<nums.length-1; i++) { //전체 반복홧수만큼 반복
boolean changed = false; // 데이터의 교환이 일어나는 여부를 나타내는 변수
for(int j=0; j<nums.length - 1 - i; j++) {
if(nums[j] > nums[j+1]) { // 앞 뒤값 중에서 앞의 값이 크면 서로 맞바꾼다.
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
changed = true; // 교환이 이루어짐을 나타낸다
}
}
System.out.println((i+1) + "회전 결과 : " + Arrays.toString(nums));
if(changed!=true) {
break; //변수 i를 쓰는 반복문을 탈출
}
}
}
}
정렬하기 전: [7, 2, 3, 8, 5]
1회전 결과 : [2, 3, 7, 5, 8] 2회전 결과 : [2, 3, 5, 7, 8] 3회전 결과 : [2, 3, 5, 7, 8] |
cs |
선택정렬 연습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public void method02() {
// 선택 정렬 연습
System.out.println("선택 정렬 연습");
System.out.println();
int[] nums = {7,5,3,8,2};
System.out.println("정렬하기 전: " + Arrays.toString(nums));
System.out.println();
for(int i=0; i<nums.length-1; i++) { //전체 횟수만큼 반복(기준데이터의 첨자 역할도 겸한다)
for(int j=i+1; j<nums.length; j++) {
if(nums[i] > nums[j]) { //기준위치의 값이 비교값보다 크면 맞교환
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
System.out.println((i+1) + "회전 결과 : " + Arrays.toString(nums));
}
} 선택 정렬 연습
정렬하기 전: [7, 5, 3, 8, 2] 1회전 결과 : [2, 7, 5, 8, 3] 2회전 결과 : [2, 3, 7, 8, 5] 3회전 결과 : [2, 3, 5, 8, 7] 4회전 결과 : [2, 3, 5, 7, 8] |
cs |
정렬 응용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public void method03() {
// 석차 구하기 연습
int[] score = {70,60,80,70,90,60};
int[] rank = new int[score.length];
for(int i=0; i<score.length; i++) { //기준데이터의 첨자역할을 한다.
rank[i] = 1; // 처음 등수는 1로 초기화한다.
for(int j=0; j<score.length; j++) { //비교데이터의 첨자 역할을 한다.
if(score[i] > score[j] ) { // 기준데이터보다 비교 데이터가 더 크면...
rank[i]++; // 등수값을 증가시킨다.
// temp++;
}
}
// rank[i] = temp;
}
System.out.println("점수\t등수");
for(int i=0; i<score.length; i++) {
System.out.println(score[i] + "\t" + rank[i]);
}
}
점수 등수
70 3 60 1 80 5 70 3 90 6 60 1 |
cs |
2차원 배열
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
public class ArrayTest05 {
public static void main(String[] args) {
//2차원 배열 ==> 행렬 구조의 배열 == 배열의 배열 형태로 구성
/*
- 2차원 배열 선언
형식) 자료형이름[][] 배열변수명;
- 배열 생성
배열변수명 = new 자료형이름[행의 개수][열의 개수]
- 배열 선언과 생성을 동시에
형식1) 자료형이름[][] 배열변수명 = {
{데이터들...}, ==> 한 행을 의미한다.
{데이터들...},
...
};
형식1) 자료형이름[][] 배열변수명 = new 자료형이름[][] {
{데이터들...}, ==> 한 행을 의미한다.
{데이터들...},
...
};
*/
/*
int[][] temp2 = new int[2][];
temp2[0] = new int[3];
temp2[1] = new int[3];
*/
/*
//2차원 배열 선언 및 생성
int[][] temp = new int[2][3];
//2차원 배열 초기화
temp[0][0] = 10;
temp[0][1] = 20;
temp[0][2] = 30;
temp[1][0] = 100;
temp[1][1] = 200;
temp[1][2] = 300;
*/
//2차원 배열의 선언 및 초기화
int[][] temp = new int[][]{
{10,20,30},
{100,200,300}
};
for (int i=0; i<temp.length; i++) {// 행의 갯수만큼 반복처리
for(int j=0; j<temp[i].length; j++) { //열의 갯수만큼 반복처리
System.out.println(i + " , " + j + " => " + temp[i][j]);
}
}
}
}
0 , 0 => 10
0 , 1 => 20 0 , 2 => 30 1 , 0 => 100 1 , 1 => 200 1 , 2 => 300 |
cs |
<5~8교시 DB>
날짜 함수
NEXT_DAY(DATE,오늘) => 다음주 해당 요일
NEXT_DAY(DATE,내일)==> 내일
1
2
3
4
5
6
7
8
9
10
11
|
사용예) 사원테이블에서 HIRE_DATE를 이용하여 각 사원의 근속년수를 조회하시오
근속년수는 XX년 YY월 형식으로 출력하시오.
Alias는 사원번호, 사원명, 입사일, 근속기간
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
HIRE_DATE AS 입사일,
LPAD(TRUNC(ROUND(MONTHS_BETWEEN(SYSDATE,HIRE_DATE))/12)||'년' ||
MOD (ROUND(MONTHS_BETWEEN(SYSDATE,HIRE_DATE)),12)||'월',10) AS 근속기간
FROM HR.EMPLOYEES
ORDER BY 3;
|
cs |
1
2
3
4
5
6
7
8
9
|
사용예) 회원테이블에서 회원생년월일을 이용하여 나이를 조회하시오.
Alias는 회원번호, 회원명, 생년월일, 나이, 연령대
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_BIR AS 생년월일,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM MEM_BIR) AS 나이,
TRUNC (EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM MEM_BIR), -1)||'대' AS 연령대
FROM MJY.MEMBER;
|
cs |
집계함수
DB에서 절대 잊지 말아야 할 것 중
1.기본키는 Not Null, No Duplicate
2.집계함수
1
2
3
4
5
6
7
8
9
10
11
|
사용예)2020년 월별,상품별 판매집계를 조회하시오
SELECT SUBSTR(A.CART_NO,5,2)||'월' AS 월,
B.PROD_NAME AS 상품명,
SUM(A.CART_QTY) AS 판매수량,
SUM(A.CART_QTY*B.PROD_PRICE) AS 판매금액
FROM MJY.CART A, MJY.PROD B
WHERE A.PROD_ID=B.PROD_ID
GROUP BY SUBSTR(A.CART_NO,5,2), B.PROD_NAME
ORDER BY 1;
ORDER BY 3;
|
cs |
'개발 > 대덕인재개발원' 카테고리의 다른 글
대덕240919-자바:객체,클래스 개념/DB:형변환 함수,조인 (0) | 2024.09.19 |
---|---|
대덕240913-자바: 메서드/DB:등위,NULL처리 함수 (1) | 2024.09.13 |
대덕240911-자바:/DB:문자열,숫자 함수 (1) | 2024.09.11 |
대덕240910 자바:참조 타입,변수/DB:기타 연산자 (0) | 2024.09.10 |
대덕240909-자바:반복문2/DB:명령,연산자 (0) | 2024.09.09 |