페어 코딩

가언·2024년 7월 3일

버블 정렬 페어 코딩 with jody

버블 정렬이란?

서로 인접한 두 원소를 검사하여 정렬하는 알고리즘
인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환한다.

페어코딩 룰

30분 제한을 두고 5분마다 진행자와 관찰자 역할을 바꾸어 진행!

import java.util.Arrays;

public class Bubble {
  // 가언 정렬
  private static int[] bubble(int[] array) {

    for (int i = array.length-1; i >= 0; i--) {
      for (int j = 0; j <= i; j++) {

        if (array[j] > array[i]) {
          int temp = array[i];
          array[i] = array[j];
          array[j] = temp;
          System.out.println(Arrays.toString(array));
        }

      }
    }

    return array;
  }

  static int[] bub(int[] arr) {
	//버블 정렬
    for (int i = 1; i < arr.length; i++) {
      for (int j = 0; j < arr.length-i; j++) {
        if (arr[j] > arr[j+1]) {
          int temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp;

          System.out.println(i + ": " + Arrays.toString(arr));
        }
      }
    }

    return arr;
  }

  public static void main(String[] args) {
//    System.out.println(Arrays.toString(bubble(new int[]{4, 6, 5, 1, 2, 7, 3})));
    System.out.println(Arrays.toString(bubble(new int[]{8, 7,9,9, 3, 6, 8})));
  }
}

위 코드는➿➿
버블 정렬에 대해 페어 코딩을 jody와 함께 짜면서, 처음으로 만든 bubble 메소드이다.
버블 정렬이라고 생각하고 짜고 돌렸더니 동작을 아주 잘돼서 5분만에 완성하다니이~라는 생각으로 뿌듯함에 취해있었는데...
다시 코드를 보고, 생각을 해보니 버블 정렬과 다르게 동작하는 것을 깨닫고, 정석적인 버블 정렬을 짜기 시작했다. -> bub 메소드

페어 코딩으로 코드를 짜다보니깐 jody 하라는 대로 코드를 칠때에는 편했는데.. 막상 내가 코드를 짜도록 요구를 하는 입장이 되어 보니 머리가 지끈지끈해졌다,,ㅎ
우여곡절 끝에 정석적인 버블 정렬 코드를 완성하였고, 잘못된 부분을 4개의 눈으로
관찰하다보니깐 오히려 효율적으로 코드를 구현할 수 있었다는 생각이 들었다!
페어 코딩 대추천!!!

다시 돌아가.....
잘못된 버블 정렬 코드가 왜 잘 동작하는지 살펴보았다..
내가 봤을 때 잘못된 부분은 도통 보이지 않았고, 잘 동작되지 않는 예시도 찾을 수 없었다. 내가 새로운 정렬 알고리즘을 개발한 것인가....? "가언 정렬..?"
챗지피티에게 물어봐도 버블 정렬을 하다가 만 코드라고..ㅋㅡㅡ;
챗지피티가 알려준 반례예시를 넣어봐도 너무 잘 동작하는 것이다...흠..

혹시 가언 정렬의 반례 예시를 발견하신다면 댓글에 적어주시길 바랍니다...

그럼 저의 버블 정렬 페어 코딩 도전기였습니당~🤗

profile
@gari_guri

1개의 댓글

comment-user-thumbnail
2024년 7월 3일

가언 정렬 폼 미쳤다!!!!! 🥱😒🤭👍

답글 달기