토이 4번

야 나 개 ·2021년 11월 29일
0

주간 문제아이돌 

목록 보기
9/17
post-thumbnail

문제

정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
버블 정렬(bubble sort)로 구현해라

수행 시간을 단축할 수 있도록 코드를 수정해보세요.

버블정렬을 인접해있는 두개를 비교해서 조건에 맞으면 바꾸고 계속 배열끝까지 진행하는 방법으로
이중 반복문으로 작성한다.

여기서 주의할점은 i번째는 끝까지 갈 필요없다.
j번째는 배열의 i일때 바뀐다.

일반적인 풀이

 function solution(arr){
   //버블정렬 
   // 인접해있는걸 비교한다.
   // 끝까지 비교하는것이 아니라 
   // 끝에서 앞에 앞에 까지만 비교하면 된다.  
   // 배열 정렬을 신문법이 존재한다. 
  let answer=arr; 
  for(let i = 0; i < arr.length - 1; i++){   
    for(let j = 0; j < arr.length - i - 1; j++){
           if(arr[j] > arr[j + 1]){
              [arr[j], arr[j + 1]] = [arr[j+1], arr[j]]
            }
     }
  }        
  return answer;
 }
   

일반적으로 풀게 되면 계속

초고수 풀이

중간에 바뀌면 증감식을 넣어주고
안바뀐다면 굳이 반복하지 말라고 한다.

const bubbleSort = function (arr) {
  // TODO: 여기에 코드를 작성합니다.
  //버블정렬 
  // 인접해있는걸 비교한다.
  // 끝까지 비교하는것이 아니라 
  // 끝에서 앞에 앞에 까지만 비교하면 된다. 
  let result = arr;
  for(let i = 0; i < arr.length - 1; i++){
    let swap = 0;
     for(let j = 0; j < arr.length - i - 1; j++){
       if(arr[j] > arr[j + 1]){
         swap++
         [arr[j], arr[j+1]] = [arr[j+1], arr[j]]
       }
     }
     if(swap === 0){
       break;
     }
  }
  return result;
};
profile
야 나도 개발자 될 수 있어

0개의 댓글