버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (139)
    • 🏃‍♀️ Do it ! (80)
      • TIL (73)
      • Project (5)
      • Certificate (2)
    • 📓 TechNote (52)
      • RPA (1)
      • Python (2)
      • JAVA (13)
      • Spring (11)
      • SQL (7)
      • Git & GitHub (6)
      • CS (0)
      • HTML & CSS & JavaScript (2)
      • Tools (9)
      • API (1)
    • 🔔 Error (7)
      • Error (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 오라클
  • callback
  • 스프링
  • 톰캣
  • 데이터베이스
  • foreach
  • 이클립스
  • final필드
  • 포트폴리오
  • 배열
  • 만들기
  • 함수
  • SQL
  • 큐
  • 버블소트
  • opacity
  • 홈페이지
  • 세션
  • 안드로이드
  • 이것이자바다
  • sqld
  • 부트스트랩
  • 스택
  • dml
  • 게시판
  • 객체지향
  • 기본쿼리
  • 변수
  • 문제풀이
  • 코틀린

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자

오늘도 내 하루는

알고리즘 / 버블소트
🏃‍♀️ Do it !/TIL

알고리즘 / 버블소트

2022. 8. 15. 17:27
728x90

2022 / 8 / 12 금

 

  • 알고리즘_버블소트

✔️알고리즘_버블소트

 

알고리즘?  

- 문제를 해결하는 방법

 

컴퓨팅에서의 알고리즘이란?

- 데이터에 관한 문제를 해결하는 방법 !

 

알고리즘 성능 평가란?

- 알고리즘이 주어진 문제를 해결하는데 걸리는 시간과 데이터 입력량의 함수 관계를 해석하는 과정

더보기

데이터가 증가하면 알고리즘의 시간도 늘어난다.

 

A : 1억개의 데이터를 넣었는데 시간이 1초 걸림

B : 1억개의 데이터를 넣었는데 시간이 60초 걸림

 

누가 더 좋은 코드일까? 당연히 시간 1초 걸리는 A 

 

여기서 원인과 결과를 알 수 있음.

원인은 1억개 

결과는 걸린 시간

알고리즘 성능 평가 기준

- 입력된 데이터의 수와 연산 횟수의 함수 관계로 표현

- 데이터의 수와 연산 횟수의 관계를 정확하게 표현하는 것은 현실적으로 불가능

- 같은 알고리즘, 같은 데이터량 일지라도 상황에 따른 결과를 도출

 

알고리즘 평가 모델

시간 복잡도를 기반으로 한 평가는 아래와 같은 목표로 평가

1 - 최악의 경우를 기준

2 - 정확도가 아닌 근사치 측정

이와 같은 평가모델을 bigO 모델이라 한다.

즉 빅오는 최악의 경우를 기준으로 정확하게 보는게 아니라 패턴으로 보겠다는 것! 

더보기

 

알고리즘 성능 평가 시 고려사항

 

무엇이 좋은 알고리즘인가?!

더보기

둘 중 뭐가 좋다고 말하기는 애매하다.

그렇다고 하나의 알고리즘을 좋다, 나쁘다라고 말하는 것도 애매함

왜냐하면 다양한 조건을 종합적으로 고려해야 하기 때문.

 

만약 1개의 요소를 가진 배열이 있는데 값은 랜덤이고 0은 단 한 개.

근데 데이터가 1억개인데 0이 1억번째라면..? 5천번째라면..? 

결과 시간은 엄청나다는 것.

 

그렇기에 뭐가 더 좋은 알고리즘이라고 말하기가 애매하다 할 수 있다. 


bubble sort

-  앞에서부터 두 수를 비교하여 큰 수가 뒤로 가는 형식으로 오름차순으로 정렬이 가능하다. (내림차순도 가능)

 

        // 배열을 오름차순으로 정렬해보자.
        let bubbleSort = function(arr)
        {
            let i = 0;
            let j = 0;
 
            // 끝까지 돌았을 때 다시 처음부터 비교하기 위한 반복문
            for ( i = 0; i < arr.length -1; i++)
            {
                 // 순차적으로 비교하기 위한 반복문
                for ( j = 0; j < ((arr.length - 1) - i); j++)
                {
                    // 두수를 비교하여 앞 수가 뒷 수보다 크면
                    if (arr[j] > arr[j+1])
                    {
                        // temp에 arr[j]값을 임시저장해둔다.
                        temp = arr[j];
 
                        //arr[j]값에 arr[j+1]값을 넣는다
                        arr[j] = arr[j+1];
 
                        //arr[j+1]에 저장해두었던 temp = arr[j]값을 불러온다.
                        arr[j+1] = temp;
                    }
                }
            }
            return arr;
        };
 
        console.log(bubbleSort([4,2,3,5,1,6]));
 

 

'🏃‍♀️ Do it ! > TIL' 카테고리의 다른 글

Element / event  (0) 2022.08.17
버블소트 / DOM구조  (0) 2022.08.16
scope / 문서객체모델  (0) 2022.08.11
객체지향 / prototype /JSON / font  (0) 2022.08.10
객체지향 프로그래밍  (0) 2022.08.09
    '🏃‍♀️ Do it !/TIL' 카테고리의 다른 글
    • Element / event
    • 버블소트 / DOM구조
    • scope / 문서객체모델
    • 객체지향 / prototype /JSON / font
    버터감자
    버터감자
    🌱 새싹 개발자의 코딩 블로그 🌱

    티스토리툴바