거품이 떠오르는 것 처럼 정렬이 되기 때문에 버블정렬이다. (오름차순)
0번과 1번 swap
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 11};
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
System.out.println(Arrays.toString(arr));
}
특정 조건일때만 swap되는 처리
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 11};
for (int i = 0; i < arr.length - 1; i++) {
if(arr[0] > arr[1]){
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
}
}
arr[0], arr[1]
을 i, i+1
로 바꾼다.
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
// arr.length - 1로 하지 않으면 out of index가 발생합니다.
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
중첩 loop구성
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
for (int j = 0; j < arr.length - 1; j++) {
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
정렬이 실행할 때마다 가장 큰 아이템은 제외
public static void main(String[] args) {
int[] arr = {7, 2, 3, 9, 28, 1};
for (int j = 1; j <= arr.length; j++) {
for (int i = 0; i < arr.length - j; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
main에서는 객체 생성과 호출 하는 기능만 남긴다.
sortARound()
메소드
import java.util.Arrays;
public class BubbleSort02 {
public int[] sortARound(int[] arr){
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
return arr;
}
public static void main(String[] args) {
BubbleSort02 bubbleSort02 = new BubbleSort02();
int[] arr = {7, 2, 3, 9, 28, 1};
for (int j = 1; j <= arr.length; j++) {
arr = bubbleSort02.sortARound(arr);
}
System.out.println(Arrays.toString(arr));
}
}
반복하는 기능을 sort()
로 분리
arr.length - j
부분은 parameter(until)
로 변경
import java.util.Arrays;
public class BubbleSort02 {
public int[] sortARound(int[] arr, int until){ // until = arr.length - j
for (int i = 0; i < until; i++) { // 1 --> j
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
return arr;
}
public int[] sort(int[] arr){
for (int j = 1; j <= arr.length; j++) {
arr = sortARound(arr, arr.length - j); // arr.length - j = until
}
return arr;
}
public static void main(String[] args) {
BubbleSort02 bubbleSort02 = new BubbleSort02();
int[] arr = {7, 2, 3, 9, 28, 1};
arr = bubbleSort02.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
가장 작은 숫자가 0번자리에 오는 버블정렬
import java.util.Arrays;
public class BubbleSort2 {
public int[] sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j <= arr.length - 1; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
public static void main(String[] args) {
BubbleSort2 bubbleSort2 = new BubbleSort2();
int[] arr = {7, 2, 3, 9, 28, 1};
arr = bubbleSort2.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
ubuntu : 리눅스 배포판
ssh ubuntu@ec2도메인 -i <pemkey_name>.pem
진행이 잘 되다가 여기서 막혔다.
이유는 'SK 브로드밴드' 네트워크를 사용하기 때문
희준님의 도움으로 해결 할 수 있었다. 희준님 감사합니다.
$ sudo su -
docker run nginx
Ctrl + C : exit
docker run -p 80:80 nginx
https://www.mysql.com/products/workbench/
Ctrl + Enter
Monthly Test 1차 16:00 ~ 17:00
나머지 자습 시간
오늘의 알고리즘 시간은 버블 정렬에 대해 배워보았다. 알고리즘 문제들을 보면서 느낀건 알고리즘에서 정렬은 아주 중요한 부분이라고 생각한다. 저번 시간에 살짝 맛 봤던 sort 함수도 있었는데 정렬에 대해서도 공부를 더 해야 할 것 같다.
알고리즘 시간을 제외하고 aws로 생성한 도메인으로 docker와 mysql까지 설치해서 다뤄보는 시간을 가졌는데 오랜만에 스트레스 받지 않고 수월하게 진행하는 수업 시간이었던 것 같다. 앞으로도 오늘만 같았으면 좋겠다.
근데 의외로 많은 사람들이 서버 설치와 셋팅 과정에서 어려움을 겪는 듯 하다. 원기님도 쉽게 해낸 나에게 devops를 추천해주셨다. 아마 서버 운영 관련 분야인 것 같은데 조만간 자세히 알아봐야겠다.
오늘 처음으로 시험을 치뤘는데 다들 긴장을 많이 한 것처럼 보였지만 나는 긴장이 1도 되지 않았다. 어차피 쫓겨나는 것도 아니고 단순히 수강생들의 수준편차를 보기 위한 시험이라고 생각했기 때문이다.
시험 직전에 강사님께서 아주 어렵게 냈다고 겁을 주시긴 했지만 막상 치뤄보니 난이도가 수업을 잘 들으면 대부분 다 풀어낼 수 있는 수준이었다. 아쉬운 부분도 있었지만 나쁘지 않게 본 것 같다. 절반 이상만 넘었으면 좋겠다.