🏫 Open API_JAVA

[18일차] 알고리즘 / 버블 정렬

Dorothy_YANG 2022. 8. 17. 19:23
728x90

20220812(금)

  • 목차
    - 알고리즘
    - 버블 정렬

< 알고리즘 >

  • 의미
    : 데이터에 관한 문제를 해결하는 방법(n가지) 

  • 알고리즘 성능 평가
    방법이 많은데 어떤 게 좋은거지? ➡ 성능평가를 해서 좋은 것을 사용하려고 한다.
    알고리즘이 주어진 문제를 해결하는데 걸리는 시간과 데이터 입력량의 함수 관계를 해석하는 과정

  • BigO : 최악의 경우를 기준으로 정확하게 보는게 아니라 패턴으로만 보겠다. (어떤 것이 더 좋은 알고리즘인지)

 

https://medium.com/@callmedevmomo/%EC%9B%B9-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-01-%EB%B9%85%EC%98%A4-%ED%91%9C%EA%B8%B0%EB%B2%95-ff369f0efc1d


< Bubble Sort 정렬 >

  • bubble sort
    - 앞에서부터 두 수를 비교, 큰 수가 뒤로 가는 형식으로 맨 뒷자리 부터 큰 수가 채워지게 된다.

출처 :&nbsp;https://medium.com/austins-software-engineering-journey/bubble-sort-b2f0d63e38f7

더보기
        // [선생님 풀이]
        // asc = ture : 오름차순 , asc = false : 내림차순
        // ...ar은 파라미터를 한방에 배열로 만들어준다. 가변파라미터
        const bubblesort = function(asc, ...ar)
        {
            let arr;
            let temp = 0;

           // 1. type1이 오던 type2이 오던 type1로 맞추자.
           console.log(typeof(ar[0]));
 
           // 배열의 0번째가 넘버라면 ar값을 arr에 넣어라
           // 근데 이건 배열안의 배열이기에 [44,33,22,55,11]이게 0번째값이 됨
           if (typeof(ar[0]) === 'number')
           {
                arr = ar; // arr에 [44,33,22,55,11] 이값을 넣어라

           }
           else
           {
                arr = ar[0]; // arr[44,33,22,55,11] 이값의 0번째 값인 44를 넣어라
           }

           //arr로 버블소트를 진행
           for ( let i = 0; i < arr.length -1; i++)
           {
                for(let k = 0; k < arr.length -1 - i; k++)
                {
                    if( asc === true)
                    {
                        if (arr[k] > arr[k + 1])
                        {
                            tamp = arr[k];
                            arr[k] = arr[k + 1];
                            arr[k + 1] = tamp;
                        }
                    }
                    else // false인경우 아래 코드 실행
                    {
                        if (arr[k] < arr[k + 1])
                        {
                            tamp = arr[k];
                            arr[k] = arr[k + 1];
                            arr[k + 1] = tamp;
                        }
                    }
                }
           }
           // 이 리턴은 for문의 arr값이 아님 스택에 위치하고있는 arr값을 리턴시키는것임
            return arr;
        };

        console.log(bubblesort(true, [44,33,22,55,11])); // type1 // false를 쓰면 내림차순으로 적용된다.
        //bubblesort([44,33,22,55,11]); // type2

        let a = [1,2,3,4];
        let b = [[1,2,3,4]];
        let c = b[0];

        b[0][1] = 77;

        console.log(c[1]);

 

728x90